外汇智能交易MQL4语言教程(一)

阅读 :
欢迎访问 外 汇 邦 WWW.WaiHuiBang.com

什么是智能交易系统?它是一个用特殊的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

欢迎访问 外 汇 邦 WWW.WaiHuiBang.com
本文标题:外汇智能交易MQL4语言教程(一) - MT4平台MQL4编程学习
本文地址:http://www.ea666.cn/fxschool/autotrading/mql4/40711.html

相关文章

  • 外汇智能交易策略

      交易策略  所有的交易分类都是完全随意的。下面这种分类强调从交易的基本概念上分类  根据走势  根据走势的策略等待与所建仓位同方向的价位变化。这样,我们假设走势会保持这个方向变化。当根据走势交易...

    MQL4编程学习
  • 外汇EA及其工作原理

    EA 即 Expert Advisors 的英文缩写,中文意思专家顾问,俗称智能交易系统,就是由电脑模拟交易员的下单操作进行机器自动交易的过程。一、人工操盘过程下面我们就以MT4外汇客户端为例,首先来分析一个外汇交易员手工...

    MQL4编程学习
  • 外汇MT4平台操作帮助

      在使用mt4平台进行操作的时候,每个人都会遇到各种不同的问题,今天我们就来对一些常见的问题做一些解释。   1.聊天软件导致自动成交。有人习惯在做单的时候,同时使用聊天软件聊天。但是如果如果在MT4软件的界面...

    MQL4编程学习
  • MQL4交易函数常见错误代码及处理意见

    任何交易相关操作(OrderSend(), OrderClose(), OrderCloseBy(), OrderDelete()和OrderModify()函数)都会因为些原因导致失败,返回负的订单号或FALSE,我们通过调用GetLastError()函数能找出失败的原因。每一...

    MQL4编程学习
  • 外汇EA编程教程——变量

      1 本地变量: 定义在函数内部的变量称为本地变量,它的作用范围只有在定义它的函数内可以访问,在函数外面的代码,不能访问函数里面的变量。例如: int funcname(int a) { int abc; //函数内部的变量,只能由函数里...

    MQL4编程学习
你可能感兴趣