logo资料库

MT4 外汇交易语言 API.doc

第1页 / 共87页
第2页 / 共87页
第3页 / 共87页
第4页 / 共87页
第5页 / 共87页
第6页 / 共87页
第7页 / 共87页
第8页 / 共87页
资料共87页,剩余部分请下载后查看
语法 [Syntax] 代码格式 空格建、Tab键、换行键和换页符都可以成为代码排版的分隔符,你能使用各种符号来增加你带骂得可读性。 注释 多行注释使用 /* 作为开始到 */ 结束,在这之间不能够嵌套。单行注释使用 // 作为开始到新的一行结束, 可以被嵌套到多行注释之中。 示例: // 单行注释 /* 多行 注释结束 */ 注释 // 嵌套的单行注释 标识符 标识符用来给变量、函数和数据类型进行命名,长度不能超过31一个字节 你可以使用数字0-9、拉丁字母大写A-Z和小写a-z(大小写有区分的)还有下划线(_)。此外首字母不可以是数 字,标识符不能和保留字冲突. 示例: // NAME1 namel Total_5 Paper 保留字 下面列出的是固定的保留字。不能使用以下任何保留字进行命名。 其它 false true extern static 数据类型 存储类型 操作符 break bool color case continue datetime default double else int for string void if return switch while 数据类型 [Data types] 数据类型概述 主要数据类型有: 1 Integer (int) 2 Boolean (bool) 3 ëèòåðàëû (char) 4 String (string) 5 Floating-point number (double) 6 Color (color) 7 Datetime (datetime)
我们用Integer类型数据来作为DateTime和Color数据的存储。 使用以下方式可以进行类型站换: int (bool,color,datetime); double; string; Integer 类型 十进制: 数字0-9;0不能作为第一个字母 示例: 12, 111, -956 1007 十六进制: 数字0-9;拉丁字母a-f或A-F用来表示10-15;使用0x或者0X作为开始。 示例: 0x0A, 0x12, 0X12, 0x2f, 0xA3, 0Xa3, 0X7C7 Integer 变量的取值范围为-2147483648到2147483647。 Literal 类型 任意在单引号中的字符或十六进制的任意ASCII码例如'\x10'都是被看作为一个字符, 一些字符例如单引号('),双引号("),问号(?),反斜杠(\)和一些控制符都需要在之前加一个反斜杠(\)进行转意后 表示出来: line feed NL (LF) \n horizontal tab HT \t carriage return CR \r reverse slash \ \\ single quote ' \' double quote " \" hexadecimal ASCII-code hh \xhh 以上字符如果不经过反斜杠进行转意将不能被使用 示例: int a = 'A'; int b = '$'; int c = '©'; // code 0xA9 int d = '\xAE'; // symbol code ® Boolean 类型 Boolean 用来表示 是 和 否, 还可以用数字 1 和 0 进行表示。True和Flase可以忽略大小写。 示例: bool a = true; bool b = false; bool c = 1; Floating-point number 类型 浮点型变量在整数型后面加一个点(.)用来更精确的表示十进制数字。 示例:
double a = 12.111; double b = -956.1007; double c = 0.0001; double d = 16; 浮点型的取值范围从 2.2e-308 到 1.8e308. String 类型 字符串型是用来表示连续的ASCII码字符的使用连续的两个双引号来包括需要表示的内容如:"Character constant". 示例: "This is a character string" "Copyright symbol \t\xA9" "this line with LF symbol \n" "A" "1234567890" "0" "$" Color 类型 颜色类型可以使用以下示例里的几种方式进行定义。 示例: // symbol constants C'128,128,128' // gray C'0x00,0x00,0xFF' // blue // named color Red Yellow Black // integer-valued representation 0xFFFFFF // white 16777215 // white 0x008000 // green 32768 // green Datetime 类型 时间类型使用年、月、日、时、分、秒来进行定义,你可以使用以下示例中的方式来定义变量。 示例: D'2004.01.01 00:00' // New Year D'1980.07.19 12:30:27' D'19.07.1980 12:30:27' D'19.07.1980 12' //equal to D'1980.07.19 12:00:00' D'01.01.2004' //equal to D'01.01.2004 00:00:00' D'12:30:27' //equal to D'[compilation date] 12:30:27' D'' //equal to D'[compilation date] 00:00:00' 运算符和表达式 [Operations & Expressions] 表达式 一个表达式可以拥有多个字符和操作符,一个表达式可以写在几行里面。 示例:
a++; b = 10; x = (y*z)/w; 注:分号(;)是表达式的结束符。 算术运算符 Sum of values i = j + 2; Difference of values i = j - 3; Changing the operation sign x = - x; Product of values z = 3 * x; Division quotient i = j / 5; Division remainder minutes = time % 60; Adding 1 to the variable value i++; Subtracting 1 from the variable value k--; 加减1的运算符不能被嵌套在表达式中 int a=3; a++; // 可行的表达式 int b=(a++)*3; // 不可行的表达式 赋值运算符 注:将右侧的结果赋值给左侧的变量 将x的值赋值给y y = x; 将x的值加到y上面 y += x; 在y上面减去x的值 y -= x; 得到y的x倍的值 y *= x; 得到y除以x的值 y /= x; 取y除以x后的余数 y %= x; y向右位移x位 y >>= x; y向左位移x位 y <<= x; 得到逻辑AND的值 y &= x; 得到逻辑OR的值 y |= x; 得到逻辑非OR的值 y ^= x; 注:一个表达式只能有一个赋值运算符. 关系运算符 用返回0(False)或1(True)来表示两个量之间的关系。 a是否等于b a == b; a是否不等于b a != b; a是否小于b a < b; a是否大于b a > b; a是否小于等于b a <= b; a是否大于等于b a >= b; 真假运算符 否定运算符(!),用来表示真假的反面的结果。 // 如果a不是真的 if(!a)
Print("not 'a'"); 逻辑运算符或(||)用来表示两个表达式只要有一个成立即可。 示例: if(xl) Print("out of range"); 逻辑运算符和(&&)用来表示两个表达式要同时成立才行。 示例: if(p!=x && p>y) Print("true"); n++; 位逻辑运算符 ~ 运算符对操作数执行按位求补操作。 b = ~n; >> 运算符对操作数执行向右位移操作。 x = x >> y; << 运算符对操作数执行向左位移操作。 x = x << y; 一元 & 运算符返回操作数的地址 为整型和 bool 类型预定义了二进制 & 运算符。对于整型,& 计算操作数的按位“与”。对于 bool 操作数, & 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,其结果才为 true。 b = ((x & y) != 0); 二进制 | 运算符是为整型和 bool 类型预定义的。对于整型,| 对操作数进行按位“或”运算。对于 bool 操 作数,| 对操作数进行逻辑“或”计算,也就是说,当且仅当两个操作数均为 false 时,其结果才为 false。 b = x | y; 为整型和 bool 类型预定义了 ^ 二进制操作数。对于整型,^ 计算操作数的按位“异或”。对于 bool 操作数, ^ 计算操作数的逻辑“异或”;也就是说,当且仅当只有一个操作数为 true 时,其结果才为 true。 b = x ^ y; 注:位逻辑运算符只作用于Integers类型 其它运算符 索引。定位在数组中i位置的值。 array[i] = 3; //将3负值到array数组第i位置上 使用 x1,x2,...,xn 这样的方法将各种值传送到function中进行运算。 示例:
double SL=Ask-25*Point; double TP=Ask+25*Point; int ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,SL,TP, "My comment",123,0,Red); 优先级规则 下面是从上到下的运算优先规则,优先级高的将先被运算。 () Function call From left to right [] Array element selection ! Negation From left to right ~ Bitwise negation - Sign changing operation * Multiplication From left to right / Division % Module division + Addition From left to right - Subtraction << Left shift From left to right >> Right shift < Less than From left to right <= Less than or equals > Greater than >= Greater than or equals == Equals From left to right != Not equal & Bitwise AND operation From left to right ^ Bitwise exclusive OR From left to right | Bitwise OR operation From left to right && Logical AND From left to right || Logical OR From left to right = Assignment From right to left += Assignment addition -= Assignment subtraction *= Assignment multiplication /= Assignment division %= Assignment module >>= Assignment right shift <<= Assignment left shift &= Assignment bitwise AND |= Assignment bitwise OR ^= Assignment exclusive OR , Comma From left to right 操作符 [Operators] 格式和嵌套 格式.一个操作符可以占用一行或者多行,两个或多个操作符可以占用更多的行。
嵌套.执行控制符(if, if-else, switch, while and for)可以进行任意嵌套. 复合操作符 一个复合操作符有一个(一个区段)和由一个或多个任何类型的操作符组成的的附件{}. 每个表达式使用分号 作为结束(;) 示例: if(x==0) { x=1; y=2; z=3; } 表达式操作符 任何以分号(;)结束的表达式都被视为是一个操作符。 Assignment operator. Identifier=expression; 标识符=表达式; 示例: x=3; y=x=3; // 这是错误的 一个操作符中只能有一个表达式。 调用函数操作符 Function_name(argument1,..., argumentN); 函数名称(参数1,...,参数N); 示例: fclose(file); 空操作符 只有一个分号组成(;).我们用它来表示没有任何表达式的空操作符. 停止操作符 一个break; , 我们将其放在嵌套内的指定位置,用来在指定情况下跳出循环操作. 示例: // 从0开始搜索数组 for(i=0;i
{ if(a[i]==0) continue; sum+=a[i]; } return(sum); } 返回操作符 一个return;将需要返回的结果放在return后面的()中。 示例: return(x+y); 条件操作符 if if (expression) operator; 如果表达式为真那么执行操作。 示例: if(a==x) temp*=3; temp=MathAbs(temp); 条件操作符 if-else if (expression) operator1 else operator2 如果表达式为真那么执行operator1,如果为假执行operator2,else后还可以跟进多个if执行多项选择。详见 示例。 示例: if(x>1) if(y==2) z=5; else z=6; if(x>l) { if(y==2) z=5; } else { z=6; } // 多项选择 if(x=='a') { y=1; } else if(x=='b') { y=2;
分享到:
收藏