什么是智能交易系统?它是一个用特殊的MetaQuotes 语言 4 (MQL 4)编撰的自动交易系统(ATS),和特定的图表联系在一起。智能交易系统不仅能通知平台商交易机会,而且还能自动实施交易账户上的交易,直接发送到交易服务器。和很多的IT系统一样,智能交易系统系统支持历史报告战略试探,图表上表明的登入/登出点。而且,智能交易系统的可实施码分别存储于源文件和加密的实施文件中-该种安排保证了平台商所运用的逻辑隐藏(如有必要的话),而不会泄密。
MetaTrader4 软件将智能交易系统在程序的根目录/Experts 子目录里保存为*.MQ4(source text) 和 *.EX4 (可实施码)文件。平台商可以无限量地保存智能交易系统报告,该数据可以通过导航条窗口容易地加以管理。
创建自定义智能交易系统报告的程序以及将报告和交易终端连接在MetaTrader4 用户指南里有详细的描述。
MetaQuotes 4 语言是用来编撰自定义智能交易系统软件,以便使交易程序管理自动化以及实施平台商自己的策略逻辑。MetaQuotes 4 语言易学、易用、易创建。MetaQuotes 4 语言包含相当数量的变量,用来控制目前和前期的报价、首要的算术和逻辑运算和特质,首要的内置指标和用来开启和控制头寸的命令。在语法上,该语言和由TradeStation 技术有限公司开发的简易语言类似,但是它有其本身的一部分具体特质。
程序代码是用MetaEditor4编辑器编撰的,它能够用不同的色彩集中反应MQL 4语言的不同结构,所以,有利于用户熟悉专家系统的文本。 注解开始于//符号(双斜线)。注解也可以用“斜线-星号”-“星号-斜线”组合(/*[注解]*/, 就像在 "C"编程语言一样)。
设定和控制操作战略,平台商保存一份日志文件,存储造成的信号信息、变量输出和已实施交易的结果。智能交易系统日志保存在MetaTrader4 目录下/logs/YYYYMMDD.log 文件里。目前的日志可以从以下的“终端”窗口(日志标签)直接进入。
进入MQL 4语言的目录系统,要么按目录按钮或从工具菜单打开MetaQuotes语言词典窗口操作。这个教程包含分类、运算、存储词语等功能,致使用户对该语言所用到的每个元素都有所了解。
1. 首要语言结构
像其余任何语言一样,MQL4有一套组成基本结构的首要构成元素。这些构成元素以一种特殊的方式组合排列的,以便代表适当的陈述和表达。
语言的首要对象就是报告,包含三种类型:数字、逻辑和排列。 所有的数值均采取双格式,逻辑报告或许包含真值和假值。排列就是用省略号标注的一连串字符。字符串也叫做文本串。报告可以包含在适当类型的变量当中,或直接由程序的源文本表现出来。
一个MetaQuotes 语言陈述指一个完整的用法表明。陈述可以包含保留字、运算符号、报告、变量、表达式或标点符号,而且总是以分号结尾。
保留字指具有特定或特别意义的预先设定的词语。
运算符号指在报告、变量和(或)表达式中特定的具体运算符号。
变量是用来制约数字、排列或逻辑报告的。
表达式指保留字、变量、报告和运算符号的组合,由于它们具有语言的3中类型(保留字、变量、报告)中的任一价值。
标点符号用来代表表达式,界定参数,区分词语或从新排列计算顺序。
2. 标点符号
字符 | 名称 | 描述 |
; | 分号 | 终结MetaQuotes 4语言指令 |
( ) | 圆括号 | 对表达式的值执行分组,更改计算顺序。 标注函数参数并起步变量描述表达式标注变量的初始值并在变量描述区排列组合 |
, | 逗号 | 提取函数值时,对参数执行区分 在变量描述区对变量执行区分在描述排列长度时对数字执行区分区分进入排列元素的指标 |
: | 冒号 | 用在变量描述区,起步变量列表 |
" " | 引号 | 标注一个文本(字)串。 |
[ ] | 方括号 | 标注数字,确定排列长度 标注进入某个特殊排列元素的数字(指数)标注进入历史报告的阶段数字 |
{ } | 波形括号 | 充当运算括号。可以用来代替 begin...end。将指令系列隔离成块。 |
/* */ | 注解括号 | 标注注解 |
// | 双斜线 | 清晰表明单串注解的开始 |
3. 运算符号
运算符号分成5 组:分配符号、字串符号、数学运算符号、有关符号和逻辑符号。
3.1. 分配符号
分配符号’=’(等号)是用来将具体数值(数字、排列或逻辑,视变量类型而定)分配到变量中。分配值可以是表达式的结果。比如:
变量: Counter(0);...Counter = Counter + 1;结果,反向变量取值为1。变量值也可以分配来对元素执行排列。3.2. 字串符号
操作文本串,只有一个运算符可以用上: ’+’ (加号)。 它是用来连接两个字串的。比如:
变量: 字串(" ");
...字串 = "some_" + "text";结果,字串变量包含“some_text”如此的文本串,允许将字串与数字和逻辑值结合起来。在后面的这个例子里,数字及或逻辑值在结合前,应转化为字串类型。比如:String = "string" + 1;所以,字串变量将包含"string1"的文本串。操作数不仅可以是数值,也可以是相应的含有如此数值类型的变量,以及表达式,经实施后,便造成如此的数值。3.3. 数学符号
4种首要的数学运算:加法- ’+’ (加号)、减法-’-’ (减号)、乘法-’*’ (星号)、除法-’/’ (斜线),都用在计算数值的数学表达式里。
数学表达式的例子:( Ask + Bid ) / 2 , High[1] + 20 * Point
3.4. 有关符号
有关符号用来对同种类型的两个数值执行比较。 第一个数值和第二个数值执行比较,造成逻辑值“真值”或“假值”, “差于”-’<’ (左差于号), “大于”-’>’ (右差于号);“等于”-’=’ (等号);“不等于”-’<>’; “差于或等于”-’<=’; “大于或等于”-’>=’。由有关表达式而获得的逻辑值用在MetaQuotes II语言的控制结构里。比如:
if FreeMargin < 1000 then exit; 这个字串按词典顺序执行比较,即,"aaa" 字串被觉得差于字串 "zzz"。当逻辑值执行比较时,我们应当牢记:“True”的逻辑值的数值为1,而“False”的逻辑值的数值为“0”。
3.5. 逻辑符号
逻辑符号运用户能够将逻辑值结合起来。逻辑OR - ’|’ (垂直线或竖杠);逻辑AND-’&’ (“和”符号)。逻辑符号有相应的保留字OR, AND, NOT。 比如:
If FreeMargin > 100 and FreeMargin < 1000 then print( "Free margin is ", FreeMargin );注意:当OR 和 AND运算符号是双值时,即它们有两个值执行运算,NOT运算符号是单值,即它之适用于单值。比如:Variable: Condition1( True );...Condition1 = FreeMargin >= 1000;If not Condition1 then exit;下面是逻辑运算符号的结果表:
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 |