MT4编程语言MQL4入门(全接触)
- 格式:doc
- 大小:383.50 KB
- 文档页数:150
精心整理
MT4编程语言全接触
语法[Syntax]代码格式
空格建、Tab键、换行键和换页符都可以成为代码排版的分隔符,你能使用各种符号来增加代码的可读性。
注释
多行注释使用/*作为开始到*/结束,在这之间不能够嵌套。单行注释使用//作为开始到新的一行结束,可以被嵌套到多行注释之中。
示例:
//单行注释
/*多行
??注释//嵌套的单行注释
注释结束*/
标识符
标识符用来给变量、函数和数据类型进行命名,长度不能超过31个字节
你可以使用数字0-9、拉丁字母大写A-Z和小写a-z(大小写有区分的)还有下划线(_)。此外首字母不可以是数字,标识符不能和保留字冲突.
示例:
//NAME1namelTotal_5Paper
保留字
下面列出的是固定的保留字。不能使用以下任何保留字进行命名。
数据类型 存储类型 操作符 其它
bool extern break false
color static case true
datetime continue
double default
int else
string for
void if
return
switch
while
数据类型[Datatypes]数据类型概述
主要数据类型有:
Integer(int)
Boolean(bool)
?èò?eà??(char)
String(string)
Floating-pointnumber(double) 精心整理
Color(color)
Datetime(datetime)
我们用Integer类型数据来作为DateTime和Color数据的存储。
使用以下方式可以进行类型站换:
int(bool,color,datetime);
double;
string;
Integer类型
十进制:数字0-9;0不能作为第一个字母
示例:
12,111,-9561007
十六进制:数字0-9;拉丁字母a-f或A-F用来表示10-15;使用0x或者0X作为开始。
示例:
0x0A,0x12,0X12,0x2f,0xA3,0Xa3,0X7C7
Integer变量的取值范围为到。
Literal类型
任意在单引号中的字符或十六进制的任意ASCII码例如'\x10'都是被看作为一个字符,
一些字符例如单引号('),双引号("),问号(?),反斜杠(\)和一些控制符都需要在之前加一个反斜杠(\)进行转意后表示出来:
linefeedNL(LF)\n
horizontaltabHT\t
carriagereturnCR\r
reverseslash\\\
singlequote'\'
doublequote"\"
hexadecimalASCII-codehh\xhh
以上字符如果不经过反斜杠进行转意将不能被使用
示例:
inta='A';
intb='$';
intc='?';//code0xA9
intd='\xAE';//symbolcode?
Boolean类型
Boolean用来表示
是
和
否,还可以用数字1和0进行表示。True和Flase可以忽略大小写。
示例:
boola=true;
boolb=false;
boolc=1;
Floating-pointnumber类型
浮点型变量在整数型后面加一个点(.)用来更精确的表示十进制数字。
示例:
doublea=12.111;
doubleb=-956.1007; 精心整理
doublec=0.0001;
doubled=16;
浮点型的取值范围从2.2e-308到1.8e308.
String类型
字符串型是用来表示连续的ASCII码字符的使用连续的两个双引号来包括需要表示的内容如:"Characterconstant".
示例:
"Thisisacharacterstring"
"Copyrightsymbol\t\xA9"
"thislinewithLFsymbol\n"
Color类型
颜色类型可以使用以下示例里的几种方式进行定义。
示例:
//symbolconstants
C'128,128,128'//gray
C'0x00,0x00,0xFF'//blue
//namedcolor
Red
Yellow
Black
//integer-valuedrepresentation
0xFFFFFF//white
0x008000//green
32768//green
Datetime类型
时间类型使用年、月、日、时、分、秒来进行定义,你可以使用以下示例中的方式来定义变量。
示例:
D'01.01.
D'12:30:27'//equaltoD'[compilationdate]12:30:27'
D''//equaltoD'[compilationdate]00:00:00'
运算符和表达式[Operations&Expressions]
表达式
一个表达式可以拥有多个字符和操作符,一个表达式可以写在几行里面。
示例:
a++;b=10;x=(y*z)/w;
注:分号(;)是表达式的结束符。
算术运算符
Sumofvaluesi=j+2;
Differenceofvaluesi=j-3; 精心整理
Changingtheoperationsignx=-x;
Productofvaluesz=3*x;
Divisionquotienti=j/5;
Divisionremainderminutes=time%60;
Adding1tothevariablevaluei++;
Subtracting1fromthevariablevaluek--;
加减1的运算符不能被嵌套在表达式中
inta=3;
a++;//可行的表达式
intb=(a++)*3;//不可行的表达式
赋值运算符
注:将右侧的结果赋值给左侧的变量
将x的值赋值给yy=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是否等于ba==b;
a是否不等于ba!=b;
a是否小于ba
a是否大于ba>b;
a是否小于等于ba<=b;
a是否大于等于ba>=b;
真假运算符
否定运算符(!),用来表示真假的反面的结果。
//如果a不是真的
if(!a)
Print("not'a'");
逻辑运算符或(||)用来表示两个表达式只要有一个成立即可。
示例:
if(xl)
Print("outofrange");
逻辑运算符和(&&)用来表示两个表达式要同时成立才行。
示例:
if(p!=x&&p>y)
Print("true");
n++;
位逻辑运算符
~运算符对操作数执行按位求补操作。
b=~n;
>>运算符对操作数执行向右位移操作。 精心整理
x=x>>y;
<
x=x<
一元&运算符返回操作数的地址
为整型和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=3;
//将3负值到array数组第i位置上
使用x1,x2,...,xn这样的方法将各种值传送到function中进行运算。
示例:
doubleSL=Ask-25*Point;
doubleTP=Ask+25*Point;
intticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,SL,TP,
"Mycomment",123,0,Red);
优先级规则