MQ语言简单说明与教程
关键字:programtrader    MT4    EA    MQ    MQL
本文来自:程序化交易者(www.programtrader) 详细出处参考:www.programtrader/a/MT4/2010/0913/572_3.html
人工智能系统是一允许客户策划自己的投资交易战略的具有革新性的工具。
人工智能系统是使交易过程操作自动化,使客户从实时市场监控的繁重公事解放出来的系统。许多专业客户使用多重交易系统以便在不同市场多变的环境下操作。通常他们在一些知名的分析软件包,如MetaStock TradeStation.中撰写和检验他们的投资交易战略。
有了人工智能系统,你就可以将你的真实账户同交易系统产生的信号联系起来,即通过跟踪和管理你任一时点的未平仓合约、下单和止损的记录来建立这种联系。
什么是人工智能系统呢?是用专业的MetaQuotes语言编写的于特定图表联系的自动交易系统(ATS)。它不仅告知客户交易时机,还自动执行交易账户的交易并将信号直发送到交易服务
器。同大多数IT系统一样,人工智能系统还以历史记录以及表上所反映的交易进出点来测试投资交易战略。另外,人工智能系统的执行代码是与源程序正文分开保存的。这种安排确保客户信息的保密性不受爱打听的人的影响。
编写你自己的人工智能系统程序是非常容易的,你不必是专业的程序员,你只要学会一非常简单的语言:MQL,即便是不懂得如何编写自己的系统程序人通常也可以雇佣他所熟识的精通编程的人来编,这些人可能仅需要不超过一个小时的时间来掌握编程和操作方法。
这里有许多不同的 MetaStock TradeStation 的客户制定的投资交易战略,其中大多数能较容易的转化成MQL语言,这使用户能吸取以往经验。在本页就有一些可供下载的人工智能系统版本。
环球银行 交易平台将人工智能系统设为 *.mql 源程序档用此扩展名 *.exp (操作代码用此扩展名)文件存于程序的根目录下的子目录。客户可以通过 NAVIGATORL浏览窗口管理操作多个(不限数量)的人工智能系统
关于如何开立人工智能系统并将其于交易终端联机问题的程序在环球银行客户用户向导上有详细说明。
通过用METAQUOTES 语言编写人工智能系统程序来自动管理交易操作、执行客户自己的战略。METAQUOTES 是相当容易学习、使用和安装的。MQL语言包括大量的用于控制现在和过去的报价、主要算法、逻辑运算的变量,并在建立主要指示器以及指示开立和控制头寸方面起关键作用。这种语言是同 TRADERSTION技术公司开发的EASY语言是相类似的,但它有一些特殊功能。
程序代码是由METAEDITOR文字编辑器编写的,它能将MQL II不同部分设定为不同颜,因而,可帮助用户以 // 标记(双斜线)开始通过专家系统文本注释。注释也可以用斜线星号星号斜线(/*(注释)*/,即如C语言一样)来标记。编辑器是固定以灰显示注释。
为了建立和控制投资交易战略,客户必须有一有关记录信号产生、变动的进行交易的结果的信息的日志文件。人工智能系统的日志是在环球银行客户目录中的/logs/YYYYMMDD.log 文件下。当前日志可直接访问下级终端窗口。
若要访问MQL语言的目录系统,就需要打开METAQOUTES语言窗口或者按下字典按钮或从工具菜单中查,这使得用户能获取每一用该语言的信息的祥细数据。
1.主要语言结构
同其它语言一样,MQL有一套主要的元素来构建他的主要结构。这些元素应以特殊的方式组合与安排,用以表示特定的语句和公式。
语言的主要对象是数据,即三种类型的数据:数值型、逻辑型、字符型。所有的数值型都用双重格式,逻辑型数据为真或假,字符串是用省略号标记的一串字符。字符串又名为文本串。数据可包括不同类型的变量,也可直接表示为源程序正本。
每一个METAQUOTES语句都是一完整结构,可以包含固定词、操作指令、数据、变量、表达式、标点符号,通常是以分号结束。
固定语句是指预先确定的具有特殊和具体意义的词汇。
操作指令是指定特定数据、变量、表达式操作的符号。
变量通常包含数值、字符、逻辑型数据。
表达式是指固定语句、变量、操作指令、数据的联合体,是语言中三种类型数据即数值型、字符型、逻辑型数据综合运用的结果。
标点符号是用来描述表达式、定义参量、划分句子以及数列再排序的。
2.标点符号
       
分号
METAQUOTES II中标记一段的结束
括号
在表达式的一组数据中改变计算顺序,标记函数中的参量以及在描述变量的初始表达式,标记变量的初始值和变数描述段的排列。
逗号
当函数已引用时,分开参量,在变量描述段中分开变量,在描述数列长度时分开数据,在存取数组元素时分开指数。
冒号
用在变量描述段中标记一变量表的开始。
" "
引号
标记一个字符串(文本串)。
[ ]
方括号
标记特定数组长度的数值,标记一个数组中特定元素的存取数,标记访问历史数据的期数。
{ }
大括号
用做算术括号。可以用来代替“开始…结束 ”将一段指令单独划做一区。
/* */
注释括号
标记注释
//
双斜线
表明一单字元注释的开始
3.运算
运算可分为5种形式:赋值运算、字符运算、数学运算、比较运算和逻辑运算。
3.1赋值运算
赋值运算的=(等于)是用来给变量赋予一特定的值(可为数值型、字符型、逻辑型,即取决于变量类型)这种赋值可能是一表达式。
例如:
变数COUNTER(0)
Counter=counter+1;因而,COUNTER变量即被赋值为1
数值同样也能被赋值给数列。
3.2 字符运算
操作字符串时,只有运算符可使用+。特用于连接两个字符。
例如:
Variable: String(" ");
...
String = "some_" + "text";
因此,字符变量可以是字符,也可是包含数值和逻辑型数据的复合字符串,而后者在连接数值和逻辑数据之前需将它们转化为字符型。
例如:
String = "string" + 1;
这样,这个字符变量就可以包含“string 1”字符了。 交易时间字符串是什么
操作数不仅可以是数值,还可以是相应的变量以及操作后的表达式。
3.3 数学运算
4种主要的数学运算是:加‘+’,减‘-’,乘‘*’,除‘/’;它们是在数学表达式中用来计算数值的。
例如:
(Ask+Bid)/ 2,High+20*Point
3.4 比较运算
比较运算是用于同类型数据之间的比较。第一个数与第二个数比较得出“真”或“假”,小于“〈”,大于 “〉”,等于“=”,不等于“〈〉”,小于等于“〈=”,大于等于“〉=”。逻辑值是METAQUOTES语言控制下比较表达式运算的结果。
例如:
if FreeMargin < 1000 then exit;
字符型数据是按字母顺序比较的,如“AAA”字符就小于字符“ZZZ”。当逻辑型数据进行比较时,必须记住逻辑值“真”用数值表达就是1,而逻辑值“假”则用0表示。
3.5 逻辑运算
逻辑运算将逻辑数据连接起来。OR—|”(或者),AND—&”(并且),NOT—“!”(非)。逻辑运算有相应的固定词ORANDNOT
例如:
If FreeMargin>100 and FreeMargin<1000 then print("Free margin is", FreeMargin);
记住,当ORAND是重置的,那么,数据就得计算两次。NOT是第一次序的,即NOT仅仅适用于单一值。
例如:
Variable: Condition1( True );
...
Condition1 = FreeMargin >= 1000; (注:freemargin 大于等于1000时,condition1true;否则为false
If not Condition1 then exit;
下面是逻辑运算的结果表格。(即:freemargin<1000时退出)
value1
value2
value1 OR value2
True
True
True
True
False
True
False
True
True
False
False
False
value1
value2
value1 AND value2
True
True
True
True
False
False
False
True
False
False
False
False
value1
NOT value1
True
False
False
True
/*老实说,原文我也没看懂这个,不知道想表达个啥~哈哈……尴尬摸头笑*/
4.固定词
METAQUOTES II语言有几组固定词
1) 逻辑算式
ANDORNOT
2) MQLⅡ命令
Array, Begin, Break, Continue, Define, Downto, Else, End,
Exit, For, If, Input, Then, To, Variable, While
定义语句结构的固定词语又名关键词
3) 固定函数
Abs, AccName, AccountName, Alert, Ceil, CloseOrder,
Comment, Cos, CurTime, Day, DayOfWeek, DeleteOrder,
Exp, Floor, Highest, Hour, iADX, iATR, iBANDS, iCCI,
iMA, iMACD, iMFI, iMOM, iRSI, iSAR, iSTO, iWPR, IsDemo,
IsIndirect, LastTradeTime, Log, Lowest, Minute, Mod,
ModifyOrder, Month, MoveObject, NumberToStr, Ord,
Ordervalue, Period, Pow, Print, PrintTrade, Rand,Round,

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。