盈点中国

 找回密码
 立即注册
盈点中国 首页 EA编程 查看内容

MT4语法学习

2015-8-14 12:57| 发布者: admin| 查看: 343| 评论: 0

摘要: 语法 代码格式空格建、Tab键、换行键和换页符都可以成为代码排版的分隔符,你能使用各种符号来增加代码的可读性。注释 多行注释使用 /* 作为开始到 */ 结束,在这之间不能够嵌套。单行注释使用 // 作为开始到新的一 ...
语法 [Syntax] 
代码格式 
空格建、Tab键、换行键和换页符都可以成为代码排版的分隔符,你能使用各种符号来增加代码的可读性。 
 
注释  
多行注释使用 /* 作为开始到 */ 结束,在这之间不能够嵌套。单行注释使用 // 作为开始到新的一行结束,可以被嵌套到多行注释之中。 
示例: 
// 单行注释  
/* 多行 
     注释 // 嵌套的单行注释  
注释结束 */ 
 
标识符  
标识符用来给变量、函数和数据类型进行命名,长度不能超过31个字节 
你可以使用数字0-9、拉丁字母大写A-Z和小写a-z(大小写有区分的)还有下划线(_)。此外首字母不可以是数字,标识符不能和保留字冲突. 
示例: 
// NAME1 namel Total_5 Paper 
 
保留字  
下面列出的是固定的保留字。不能使用以下任何保留字进行命名。  
数据类型 存储类型 操作符 其它 
bool  extern  break  false  
color  static  case  true  
datetime  continue 
double  default 
int  else 
string  for 
void  if 
return 
switch 
while 
数据类型 [Data types] 
数据类型概述 
主要数据类型有: 
Integer (int)  
Boolean (bool)  
ëèòåðàëû (char)  
String (string)  
Floating-point number (double)  
Color (color)  
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<ARRAY_SIZE;I++) 
if((array[i]==0) 
break; 
 
继续操作符 
一个continue;我们将其放在嵌套内的指定位置,用来在指定情况下跳过接下来的运算,直接跳入下一次的循环。 
示例: 
// summary of nonzero elements of array 
int func(int array[]) 
int array_size=ArraySize(array); 
int sum=0; 
for(int i=0;i 
if(a[i]==0) continue; 
sum+=a[i]; 
return(sum); 
 
返回操作符 
一个return;将需要返回的结果放在return后面的()中。 
示例: 
return(x+y); 
 

鲜花

握手

雷人

路过

鸡蛋
GKFX

外汇实盘交易、外汇保证金交易及其他金融投资产品均存在较高风险,并不适合每一位投资者。如有必要,请咨询专业的投资顾问或法律人士。

关于我们

关于我们
联系我们
加入我们
给我们留言

服务内容

广告投放
服务条款
免责声明
友情链接

智能交易

ZuluTrade
外汇EA下载
外汇EA使用
外汇EA测试

盈点中国

盈点中国是业内知名的新兴外汇网站,主要提供外汇EA、外汇自动跟单系统、外汇行情分析指导、外汇交易知识培训等专业金融服务。

客服邮箱:support@pipschina.com | 客服QQ:3078351292 | QQ交流群:113631736

Copyright© 2015 www.pipschina.com. All Rights Reserved.盈点中国版权所有

GMT+8, 2017-12-12 14:32