编写MQL4语言课程112课Word文件下载.docx
- 文档编号:4576587
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:65
- 大小:569.42KB
编写MQL4语言课程112课Word文件下载.docx
《编写MQL4语言课程112课Word文件下载.docx》由会员分享,可在线阅读,更多相关《编写MQL4语言课程112课Word文件下载.docx(65页珍藏版)》请在冰点文库上搜索。
cdD:
\ProgramFiles\MetaTrader4
metalang-q"
\ProgramFiles\MetaTrader4\my_first_mql4_script.mq4"
(不要忘了把路径更改为你的MetaTrader的安装路径).
4-运行这个批处理文件,如果你像我一样幸运的话,你将看到下面的画面。
与你看见的一样,你将获得“my_first_mql4_script.ex4”输出文件。
2-简单的:
Metatrader已经装置了一个很好的IDE(integrateddevelopmenteditor,集成开发环境)——MetaEditor,它有如下特性:
1-当你读写代码的时候它是一个有着MQL4语言强大和不同特性的文本编辑器。
2-方便的编译你的程序,只要按下F5,MetaEditor将为你做完所有的困难工作并输出“ex4”文件。
(另外它还很容易的看出你的程序那里出错了)
3-内置参考字典。
你可以访问高亮的关键字。
如果想进一步了解它,请按F1.
在接下来的课程里,我们将知道更多的关于MetaEditor。
今天我仅仅是给大家打个招呼,明天我们将开始真正的工作,你将学习MQL4的语法。
非常欢迎批评指正。
明天见。
最后感谢大家,欢迎回帖批评指正。
MQL4课程
语法
我希望你满意那个试着回答了:
“什么”是MQL4?
“为什么”使用MQL4和“在哪儿”书写MQL4的欢迎课程。
方法或怎么做(how)永远是最大最重要的问题,接下来的全部课程就是答案。
现在,我希望你清空你思想中的任何混乱想法,并且认真阅读下面的这些概念。
我们今天正在谈论的是关于MQL4的语法规则。
就像我以前告诉你的那样,如果你是个c语言或者c++的程序员,那么在我的课程没开始之前你就已经知道了许多MQL4的事情。
这是因为MQL4的语法和c语言的语法很像。
当我们学习一种语言的语法时,我们同时在学习它的原理和书写规则。
它有以下几部分组成:
1、格式
2、注释
3、标识符
4、保留字
让我们把它分成以下几块。
一、格式
当你书写代码的时候,你可以自由的使用空格,制表符和空行来分隔你的代码和代码行,使它们更加的易读和美观。
例如,下面这些语句行在MQL4里都是正确的:
DoubleMacdCurrent,MacdPrevious,SignalCurrent:
Double
MacdCurrent,
MacdPrevious,
SignalCurrent:
但是,就像你看到的,第一行更易读和容易理解。
在MQL4的语言规则里有两个例外:
1、在“contorllingcompilation”里不能使用新行。
(我实在不知道老外在这里什么意思,不过还好。
因为他说)在下一课里你将知道关于“contorllingcompilation”更多,现在只要记住这个例外就好了。
例如下面的代码行是错误的,并且MQL4编译的时候将会报错:
这是正确的“contorllingcompilation”:
2、在常数值,标识符和关键字的中间不能使用空格或新行。
例如,这一行是正确的:
Extern和int是关键字,MA_Period是标识符,13是常数值。
在下一课,你将知道的更多。
下面的这些行是不正确的:
注意1和3之间的制表符。
注意关键字extern中间的制表符。
二、注释
为了使程序设计世界更容易些,任何程序语言都要它自己书写注释的风格。
代码行里的注释会被汇编器忽略,但它使你的程序更加的清楚和易懂。
假定你在夏天写了某个程序,到了冬天你再读它的时候,如果没有注释——尽管你是代码的编写者——你不能理解全部的这些谜一样的代码行。
MQL4(c++)使用两种注释方式:
1、单行注释
单行注释开始于“//”,结束于一个新行。
例如:
2、多行注释
多行注释开始于“/*”,结束于”*/”。
你也可以像下面这样在多行注释里嵌套一个单行注释:
这也是争取的注释:
但这样是错误的:
三、标识符
标识符用来给变量、函数和数据类型进行命名,长度不能超过31个字节你可以使用数字0-9、拉丁字母大写A-Z和小写a-z(大小写有区分的)还有下划线(_)。
此外首字母不可以是数字,标识符不能和保留字冲突.
例如MA_Period在这是就是个标识符:
让我们来看一些例子:
Name1
正确的
_Name1
1Name
错误的(首字母不能是数字)
~Name
错误的(不能使用~)
N~ame
I_love_my_country_and_my_country_loves_all_the_world
错误的(不能超过31个字符)
Color
正确的(注意C是大写)
错误的(color是保留字)
四、保留字
下面列出的是固定的保留字。
不能使用以下任何保留字进行命名。
(译者注:
都是小写。
数据类型
存储类型
操作符
其他
bool
extern
break
false
color
static
case
true
datetime
continue
double
default
int
else
string
for
void
if
return
switch
while
例如下面的这些代码行是不正确的:
我希望你能对这一课感兴趣。
下一课我们将讲关于“数据类型”。
准备好,真正困难的工作将要开始了。
欢迎来到MQL4课程的第三课。
回顾下上一课的内容:
⏹你可以使用什么格式来书写MQL4代码?
⏹怎样通过注释使你的程序更加完善?
⏹什么是标识符?
选择他们有什么规则?
⏹什么是MQL4的保留字?
现在,让我们享受本课的乐趣“DATATYPES”(数据类型)
数据类型是什么意思?
任何程序语言都有一套数据的内存表示的名称。
例如,如果内存保留一个-2147483648到2147483647之间的数,那么大多数的程序语言将命名这个数据为“整型数据”(Integer)。
变量?
变量是被提交到内存中的数据的名称。
你可以设想内存是连续的、大小不同的盒子。
●为了使用一个盒子存储数据,这个盒子必须被赋予一个名称,这个过程被称为“声明”。
●在“声明”过程,你用一个词告诉计算机你想使用的盒子类型和大小,这个词被称为“关键字”。
●你还可以给这个盒子起一个好记的或者跟存储数据有关系的名字,这可以方便你以后找到这个数据。
这个名字就叫“变量名”。
●通过“赋值”,可以把数据放进盒子里。
●我们可以在“声明”变量的同时就给它一个值,这个过程被称为“初始化”。
例如下面的这行代码:
intMyVaraible=0;
intß
关键字
整型数据类型
声明
MyVaraibleß
变量名
=0ß
初始化
MQL4包括以下数据类型:
■整型数据(int)
十进制:
数字0-9,包括负数。
十六进制:
数字0-9,字面a-f或者A-F代表10-15;
以0x或者0X开头。
整型数据占用4字节的空间,其数值范围介于-2147483648~2147483647之间。
如果超出这个范围,则视为无效。
intintInteger=0;
intintAnotherIntger=-100;
intintHexIntger=0x12;
■布尔数据(bool)
Boolean用来表示是和否,还可以用数字1和0进行表示。
True和Flase可以忽略大小写。
boolI=true;
boolbFlag=1;
boolbBool=FALSE;
■字符数据(char)
任何带单引号的单一字符或者十六进制的ASCII码如'
\x10'
都是字符数据。
'
a'
'
$'
Z'
一些特殊的字符如单引号('
)、双引号("
)、问号(?
)、反斜线(\)和控制符必须以反斜线开头(\),组合表达原来的意思,如下表所示:
换行NL(LF)\n
制表符HT\t
回车CR\r
反斜线\\\
单引号'
\'
双引号"
\"
十六进制ASCIIhh\xhh
我们使用关键字INT创建字符类型。
intchrA='
A'
;
intchrB='
intc='
©
//代码0xA9
intd='
\xAE'
//货币对代码
■字符串数据(string)
字符串数据是带有双引号的一连串ASCII字符,如:
"
Characterconstant"
。
字符串可以容纳0到255个字符,如果超过这个长度,右边多余的字符将被忽略,编译器也会有相应的警示。
如果字符串中需要插入一个双引号("
)必须在它前面使用反斜线(\)。
(参见字符数据部分)
我们使用关键字STRING来创建字符串数据,例如:
stringstr1="
Helloworld1,withyoucodersguru”;
stringstr2="
Copyright©
2005,\"
Forex-tsdforum\"
."
//注意双引号的使用.
stringstr3="
1234567890"
■浮点型数据(double)
浮点型数据由整数部分、小数点(.)和小数部分组成,其中整数部分和小数部分为一系列十进制数字。
浮点型数据(双精度)占用4字节的空间。
其数值范围介于-1.7*e-308~1.7*e308之间。
我们使用关键字double来创建浮点型数据,例如:
doublea=12.111;
doubleb=-956.1007;
doublec=0.0001;
doubled=16;
doubledblNumber3=1/4;
■颜色数据(color)
颜色数据可以用三种方法表示:
字符数据、整型数据或者是颜色名(只能是Webcolors中已命名的).
字符数据的表达方法是用三个数字来表示三种主要颜色:
红、绿、蓝的比例。
以C开头,用单引号括住。
数字的值在0~255之间按比例选取。
整数数据的表达方法使用十六进制或十进制数字。
十六进制数字如0x00BBGGRR,其中RR是红色的比例,GG是绿色的比例,BB是蓝色的比例。
十进制数不能直接体现红绿蓝的比例,而是十六进制数字的十进制表示方式。
特殊的颜色名可以参考Webcolorsset表。
示例:
//字符数据
C'
128,128,128'
//灰色
0x00,0x00,0xFF'
//蓝色
//颜色名
Red
Yellow
Black
//整型数据
0xFFFFFF//白色
16777215//白色
0x008000//绿色
32768//绿色
颜色数据占用4字节的空间。
第一个字节一般被忽略,后三个字节包含了红绿蓝的组成信息。
我们使用color关键字来创建颜色数据,例如:
colorclr1=Red;
colorclr1=C'
;
colorclr1=32768;
Webcolorsset表
DarkTurquoise
LightSeaGreen
Goldenrod
MediumSpringGreen
LawnGreen
Orange
Gold
Chartreuse
Lime
SpringGreen
Aqua
DeepSkyBlue
Magenta
MediumTurquoise
Turquoise
DarkKhaki
MediumOrchid
GreenYellow
MediumAquamarine
Orchid
DarkGray
SandyBrown
Tan
BurlyWood
HotPink
Violet
SkyBlue
LightSalmon
Plum
Khaki
LightGreen
Aquamarine
Silver
LightSkyBlue
LightSteelBlue
LightBlue
PaleGreen
Thistle
PowderBlue
PaleGoldenrod
PaleTurquoise
LightGray
Wheat
NavajoWhite
Moccasin
LightPink
Gainsboro
PeachPuff
Pink
Bisque
LightGoldenrod
BlanchedAlmond
LemonChiffon
Beige
AntiqueWhite
PapayaWhip
Cornsilk
LightYellow
LightCyan
Linen
Lavender
MistyRose
OldLace
WhiteSmoke
Seashell
Ivory
Honeydew
AliceBlue
LavenderBlush
MintCream
Snow
White
■日期时间数据(datetime)
日期时间数据由6个部分的字符组成:
年、月、日、时、分、秒,以D开头,用单引号括起。
日期(年、月、日)或者时间(时、分、秒)甚至两者一起都可以不用填写。
日期时间数据开始于1.1.1970截止到12.31.2037
D'
2004.01.0100:
00'
//新年
1980.07.1912:
30:
27'
19.07.198012:
19.07.198012'
//等于D'
00:
01.01.2004'
01.01.200400:
12:
[编译日期]12:
[编译日期]00:
我们使用关键字datatime来创建日期时间数据,例如:
datetimedtMyBirthDay=D'
1972.10.1912:
datetimedt1=D'
2005.10.2204:
运算符和表达式
一些数字和字符的组合是特别重要的,它们被称为运算符,例如:
+-*/%算术运算符
&
||逻辑运算符
=+=*=负值运算符
标识符加运算符就是表达式。
举例说明:
x=(y*z)/w;
x,y,z和w是标识符
=,*和/是运算符
整个这行是表达式。
表达式组成语句,语句组成函数,函数组成程序。
■算数运算符
算术运算符包括加法和乘法运算:
运算符
名称
示例
+
加
A=B+C;
-
减
A=B-C;
+-
改变符号
A=-A;
*
乘
A=B*C;
/
除
A=B/C;
%
求模
A=A%C;
++
自加一
A++;
--
自减一
A--;
添加1的运算符不能使用在表达式中。
inta=3;
a++;
//有效表达式
intb=(a++)*3;
//无效表达式
b=a*5//有效表达式
■赋值运算符
任何表达式的目的是产生一个结果,赋值运算符把这个结果赋予给左边的操作数。
A=B*C
在这里,我们把B和C相乘,并把结果赋予给A。
(=在这儿是赋值运算符)
MQL4有11个赋值运算符:
把B的值赋予AA=B;
在y值上加上xy+=x;
在y值上减去xy-=x;
在y值上乘以xy*=x;
在y值上除以xy/=x;
在y值上求x的模y%=x;
把y值向右做x位逻辑移位y>
>
=x;
把y值向左做x位逻辑移位y<
<
AND位运算符y&
OR位运算符y|=x;
把x和y按做逻辑异或的操作y^=x;
■关系运算符
用返回0(False)或1(True)来表示两个量之间的关系。
逻辑值FALSE代表整数零值,逻辑值TRUE代表不同于零的任何值。
MQL4有六个关系运算符。
示例如下:
4==4;
//等于,结果TRUE,或1
4<
4;
//小于,结果为FALSE或0
4>
4;
//大于,结果为FALSE或0
=4;
//小于等于,结果为TRUE或1
=4;
//大于等于,结果为TRUE或1
4!
//不等于,结果为FALSE或0
■布尔运算符(逻辑运算符)
逻辑运算符是根据表达式的值来返回真值或是假值。
MQL4使用3个逻辑运算符:
说明
逻辑与
A&
B;
如果A和B值都是真实的,表达式值为TRUE
(1)。
否则,表达式的值为FALSE(0).
||
逻辑或
A||B;
A和B值的逻辑运算符或OR(||)用来表示两个表达式只要有一个成立即可。
如果A和B值为真的,表达式值为TRUE
(1)。
否则,值为FALSE(0)。
逻辑表达式被完全计算。
!
逻辑非
A;
否定运算符(!
),用来表示真假的反面的结果。
如果运算值是FALSE(0)结果为TRUE
(1);
如果运算不同于FALSE(0)等于FALSE(0)。
■位逻辑运算符
位逻辑运算符和逻辑运算符比较相似,只是他们工作在一个比较小的范围---二进制数据。
运算符对操作数执行按位求补操作。
表达式的数字值中包含1,其中n包含0和数字值中包含0,其中n包含1。
b=~n;
运算符x向右移动到数字y代表二进制代码。
向右移动是逻辑运算,即左侧将被零填满。
x=x>
y;
左侧将被零填满
x=x<
二进制的x和y代表位逻辑运算符AND。
在所有数组中x和y的值都不含有零表达式的值包含1(TRUE);
在所有其他数字中包含0(FALSE)。
b=((x&
y)!
=0);
二进制的x和y代表位逻辑运算符OR。
在所有数字中x和y的值都不等于零表达值包含1并且在所有其他数字中包含0。
b=x|y;
二进制的x和y代表位逻辑运算符EXCLUSIVE。
在所有数字中x和y的值都不同于二进制值表达值包含1并且在所有其他数字中包含0。
b=x^y;
位逻辑运算符只作用于Integers类型。
■其他运算符
这些运算符不属于前面任何一个种类。
[]
指数
下一课中会有详细说明
()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编写 MQL4 语言 课程 112