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);

优先级规则