MQ语言简单说明与教程(2)

2018-11-27 18:38

Cornsilk, Crimson, Cyan, DarkBlue, DarkCyan, DarkGoldenrod, DarkGray, DarkGreen, DarkKhaki, DarkMagenta, DarkOliveGreen, DarkOrange, DarkOrchid, DarkRed, DarkSalmon, DarkSeaGreen, DarkSlateBlue, DarkSlateGray, DarkTurquoise, DarkViolet, DeepPink, DeepSkyBlue, DimGray, DodgerBlue, FireBrick, FloralWhite, ForestGreen, Fuchsia, Gainsboro, GhostWhite, Gold, Goldenrod, Gray, Green, GreenYellow, Honeydew, HotPink, IndianRed, Indigo, Ivory, Khaki, Lavender, LavenderBlush, LawnGreen, LemonChiffon, LightBlue, LightCoral, LightCyan, LightGoldenrod, LightGreen, LightGrey, LightPink, LightSalmon, LightSeaGreen, LightSkyBlue, LightSlateGray, LightSteelBlue, LightYellow, Lime, LimeGreen, Linen, Magenta, Maroon, MediumAquamarine, MediumBlue, MediumOrchid, MediumPurple, MediumSeaGreen, MediumSlateBlue, MediumSpringGreen, MediumTurquoise, MediumVioletRed, MidnightBlue, MintCream, MistyRose, Moccasin, NavajoWhite, Navy, OldLace, Olive, OliveDrab, Orange, OrangeRed, Orchid, PaleGoldenrod, PaleGreen, PaleTurquoise, PaleVioletRed, PapayaWhip, PeachPuff, Peru, Pink, Plum, PowderBlue, Purple, Red, RosyBrown, RoyalBlue, SaddleBrown, Salmon, SandyBrown, SeaGreen, Seashell, Sienna, Silver, SkyBlue, SlateBlue, SlateGray, Snow, SpringGreen, SteelBlue, Tan, Teal, Thistle, Tomato, Turquoise, Violet, Wheat, White, WhiteSmoke, Yellow, YellowGreen.

所有的固定词都是不计较格式的,它们可以用大写字母也可用小写字母。 4.1预设变数

通常,已编写完毕的人工智能系统是需要改变某一参数的,这将影响系统的运作。为避免每次都以手动编辑系统代码和基本变量来改变参数,一个类似于METAQUOTES系统中所用的方法应运而生:有4种参量置于人工智能系统的properties table(工具台)下的METAEDITOR的菜单档 - Properties(用具)... - Processing tab(程序卷标)

Lots –手数

StopLoss – 止蚀点 TakeProfit – 目标位

TrailingStop – 移动止损指令

这些变量的初始值可以在人工智能系统的PROPERTIES TABLE(工具台)中直接键入或在按F7时弹出的特别设置对话框中或是在菜单(Charts - Expert Advisors - Properties)中修改。这些变量不能在程序中修改。

★4.2 METAQUOTES II语言的命令结构

4.2.1变量说明和描述

在计算过程中储存临时数据需要用到变量。变量是在程序的最开头用关键词、数组、定义来描述。这些词是可以用复数形式的。这些词通常在描述变数语句的开端。而这些词之间的区别在于:“variable” 是用来描述变量,“ array”是用来描述数组 “define”是用以描述用户自定义变量,(这种自定义变量类似于预设变量可以通过设置对话框来修改即外部修改,但不同点在于自定义变量可在程序计算过程中改变)

变量描述语法

NAME(初始值),“NAME”是变量的名称,“初始值”是变量的初始值。这个初始值界定了变量的类型——数值型、字符型、逻辑型

举例:

COUNTER(0); 数值变数

STRING1(“SOME STRING”);字符变量

MYCONDITION(FALSE) 逻辑变量

Array : ArrayName[rows,columns]( Initialvalue );数组长度一个或多个数值决定—数值]]

在 MetaQuotes 语言中数组有可能有一、二、三、四位数值长度。在一般术语中,数组是指一组排列成行的拥有同一名称(数组名)且按顺序给定每一数值序号的变数组。数列在理清同一类型的数据的顺序时是非常方便的。交易终端的历史记录就是数列功能的很好的范例,如开盘价、收盘价、最高价、最低价、成交量。这些数据是以单个元素的形式存取。例如:CLOSE过去5个时点的收盘价。两个元素的数列可以是一个第一次排横序第二次排纵序的结果。例如:

Array : MyTable[10,5]( 0 ); // a 10 rows by 5 columns table (1个10行5列的表)

print( MyTable ); // print the fourth element in the second row

数列可以包含不同类型的数据——数值型、字符型、逻辑型,但是,它需为同一类型,数列建立之初起初使值已经确定化了。

附加用户名的描述语法:

Define : Name( InitialNumber );NAME名称变量,INITIALNUMBER是变量的初始值。

需要指出的是附加用户名变量仅仅是数值型数据。上面已经提到,用户名变量可以在程序的计算过程中修改,这样的修改仅仅在人工智能系统的当前部分有效直到特定智能系统从客户终端操作中撤销。当再次启动人工智能系统时,附加用户名变量又会初始化为新值。

4.2.2 EXIT语句

EXIT语句是终止系统运作的语句,也就是所谓的预设终止程序。

4.2.3 IF-THEN条件语句

IF-THEN条件语句实现了控制运行系统指令的顺序的功能。这个语句可以由不同方式编写。语法如下:

if Condition then Statement;or

if Condition then begin //推荐使用 Statement; Statement; ... end;

当条件是逻辑表达式使用了“True” 或 “False”时;STATEMENT(语句)可以是MQL II语言中的任何指令。算式括号(Begin – End)可以由大括号{}代替。

条件句可以用来分写程序。为此,必须再用到另外一关键词Else : if Condition then Statement1 else Statement2; if Condition then begin Statement; Statement; ... end else

Statement; Statement; ... end;or

if Condition then begin Statement; Statement; ... end

else Statement2;or

if Condition then Statement1 else

Statement; Statement;

.可以使用嵌套式的条件语句。通常,MQL II语言中的任意语句都代表一合法指令,变量描述除外。因为,严格的讲,变量描述不是一可执行指令。

4.2.4 The WHILE 循环 ★

While loop 语句是确保只要循环条件为“真”包含循环本体的语句就一直执行的语句。一个循环在遇BREAK语句是终止。反复循环也可以可用CONTINUE语句终止。这个语句使得下一个循环开始。也就是说,这种语句之后会出现CONTINUE并且跳至循环末而不再执行这个循环。因而,在条件句中毕会使用使用BREAK和CONTIMUE。语法:

while Condition begin Statement; ... end;

当条件是循环执行条件句时,每一循环的逻辑表达计算式是以“真”、“假”值表示。该条件句可以是MQL II语言中的任何指令。算式括号(Begin – End)表示循环本体且可以由大括号{}代替。

BREAK 和CONTINUE不是必用的。例子:

Counter = 1;

while Counter <= Bars begin print( Close );

Counter = Counter + 1; end;

4.2.5 FOR循环

FOR循环是确保包含特定次数的循环本体的语句的执行。语法:

for NumberVariable = Initialvalue to|downto Limitvalue begin Statement; ... end:

数值变量在循环中是可变的,在每次循环之后,它会增加或减少(取决于关键词是用TO还是DOWNTO);

初始值是循环变量的初始数据;

语句可以是MQL II语言编写的任何指令;

TO或DOWNTO指定循环变量每次增加或减少1

LIMITvalue 是循环变量的边际数值

算式括号(Begin – End)表示循环本体且可以由大括号{}代替。

BREAK 和CONTINUE不是必用的。例子:

for Counter = 1 to 10 begin

if Counter > Bars then break; print( Close ); end;

这个例子是说可以循环10次。但若BARS值小于10,循环就会提前终止,也就是说循环执行BARS次。

4.2.6 BREAK语句

BREAK语句是使FOR和WHILE循环中断的语句。前面的例子不仅说明LOOP循环的运作,还说明BREAK语句的用法。BREAK语句仅仅可以在循环体中使用。循环也可以是嵌套式的。BREAK语句使与它最接近的循环中断。换句话说,BREAK语句中断内部循环而不中断外部循环。

4.2.7 CONTINUE语句

CONTINUE语句就是提前终止循环而开使执行下一个循环。换句话说,CONTINUE句之后的语句即被忽视掉。例如:

for Counter = 1 to 10 begin ...

if Counter > Bars then continue; print( Close ); ... end;

这说明这个 循环将执行10次。但是,CLOSE值不会超过BARS次。

4.3 交易终端的预设变数

为了方便用户,人工智能系统提供一些交易终端的变量。

AccountNumber – 账号(又名ACCNUM)

Ask – 卖出价(沽盘价)

Balance –交易账户余额

Bars – 图表上棍的数量—是一非常重要的填充图表数据的变量

Bid – 买入价(买价)

Close – 收盘价


MQ语言简单说明与教程(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:BL6523芯片的设计应用指导

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: