转载]MT4语言智能交易系统编写1MetaQuotes 4 言语是用来编写自界说智能买卖编制软件,以便使买卖步调料理自愿化以及奉行买卖商本人的买卖战术。MetaQuotes 4 言语易学、易用、易创修。MetaQuotes 4 言语包罗相当数目的变量,用来管制今朝和前期的报价、要紧的算术和逻辑运算和特性,要紧的内置目标和用来开启和管制头寸的敕令。正在语法上,该言语和由 TradeStation 技巧有限公司开荒的简略言语相通,不过它有其本身的极少全部特性。
步调代码是用MetaEditor4编辑器编写的,它也许用区别的颜色会合反应MQL 4言语的区别构造,是以,有助于用户熟练专家编制的文本。阐明初步于//符号(双斜线)。阐明也可能用“斜线-星号”-“星号-斜线”组合(, 就像正在 C编程言语相同)。
设定和管制操作策略,买卖商生存一份日记文献,存储爆发的信号音讯、变量输出和已奉行买卖的结果。智能买卖编制日记生存正在MultiBank Trader目次下/logs/YYYYMMDD.log 文献里。今朝的日记可能从下方的“终端”窗口(日记标签)直接进入。
进入MQL 4言语的目次编制,要么按目次按钮或从器材菜单翻开MetaQuotes言语辞书窗口操作。这个短小的手册蕴涵分类、运算、存储词语等功效,使得用户对该言语所用到的每个元素都有所了然。
像其他任何言语相同,MQL4有一套组成根本构造的要紧构成元素。这些构成元素以一种奇特的办法组合陈列的,以便代外恰当的陈述和外达。
言语的要紧对象便是数据,包罗三品种型:数字、逻辑和陈列。 全豹的数值均采用双花式,逻辑数据能够包罗真值和假值。陈列便是用省略号标注的一系列字符。字符串也叫做文本串。数据可能蕴涵正在恰当类型的变量之中,或直接由步调的源文本浮现出来。
一个MetaQuotes 言语陈述指一个完美的用法注解。陈述可能包罗保存字、运算符号、数据、变量、外达式或标点符号,况且老是以分号终局。
外达式指保存字、变量、数据和运算符号的组合,由于它们具有言语的3中类型(保存字、变量、数据)中的任一代价。
对外达式的值实行分组,改换准备挨次。 标注函数参数并启动变量描绘外达式 标注变量的初始值并正在变量描绘区陈列组合
提取函数值时,对参数实行分别 正在变量描绘区对变量实行分别 正在描绘陈列长度时对数字实行分别 分别进入陈列元素的目标
标注数字,确定陈列长度 标注进入某个奇特陈列元素的数字(指数) 标注进入史书数据的时间数字
充任运算括号。可能用来代庖 begin...end。将指令系列阻隔成块。
运算符号分成5 组:分拨符号、字串符号、数学运算符号、合联符号和逻辑符号。
分拨符号=(等号)是用来将全部数值(数字、陈列或逻辑,视变量类型而定)分拨到变量中。分拨值可能是外达式的结果。比方: 变量: Counter(0); ... Counter = Counter + 1;结果,反向变量取值为1。变量值也可能分拨来对元素实行陈列。
操作文本串,惟有一个运算符可能用上: + (加号)。 它是用来连合两个字串的。比方:
变量: 字串( ); ... 字串 = some_ + text; 结果,字串变量蕴涵“some_text”如此的文本串,许诺将字串与数字和逻辑值连合起来。正在后面的这个例子里,数字及或逻辑值正在连合前,应转化为字串类型。比方: String = string + 1; 是以,字串变量将蕴涵string1的文本串。操作数不只可能是数值,也可能是相应的含有如此数值类型的变量,以及外达式,经奉行后,便爆发如此的数值。
4种要紧的数学运算:加法- + (加号)、减法-- (减号)、乘法-* (星号)、除法-/ (斜线),都用正在准备数值的数学外达式里。
合联符号用来对同品种型的两个数值实行斗劲。第一个数值和第二个数值实行斗劲,爆发逻辑值“真值”或“假值”, “小于”- (左小于号), “大于”- (右小于号);“等于”-= (等号);“不等于”-; “小于或等于”-=; “大于或等于”-=。由合联外达式而赢得的逻辑值用正在MetaQuotes II言语的管制构造里。比方:
if FreeMargin 1000 then exit; 这个字串按辞书挨次实行斗劲,即,aaa 字串被以为小于字串 zzz。当逻辑值实行斗劲时,咱们该当紧记:“True”的逻辑值的数值为1,而“False”的逻辑值的数值为“0”。
实践上,上述固定字为宏纪录器,即语法阐明步调用数值取而代之。宏纪录器的引入简化了编写用户功效哀求的步调:愈加利便、无干系的紧急词语可能用来代替极少函数参数值。同样可能用于颜色名称。
智能买卖编制诱导提示MQL 4许诺编写智能买卖编制、自编目标、自编剧本和从模板中实行编辑
正在准备流程中生存权且数据哀求应用变量。变量正在本步调的起首一面就用保存字、变量、陈列和界说实行了陈述。他许诺应用这些词语的负数形势,即 “ Variables, Arrays and Defines”。这些词中央总有一个初步变量的揭晓陈述。这些词语的区别如下: variable 语句单纯变量,array语句陈列, define 语句附加用户界说的变量,相似于预先界定的用户变量,均可能通过配置对话框实行修正,即从外部修正。然而,又不像预先界定的变量,用户变量可能正在步调内部的准备流程中实行更改。 变量揭晓语法:变量:名称(初期值);这里名称便是变量的名字;“初期值”便是变量的起先值。初期值对变量的类型-数字、字串或逻辑值实行界定。一个数字变量揭晓的例子: Variable : Counter( 0 ); 一个字串变量揭晓的例子: Variable : String1( 随便字串 ); 一个逻辑变量揭晓的例子: Variable : MyCondition( false ); 数组声明语法: Array : ArrayName[Array length]( 初始值 );个中,数组长度有一个或若干(众达4)个数字-数字 - number[, number [, number [, number]]]. 正在MetaQuotes 4言语里,数组能够是1-,2-,3-,4-个元素长度,大凡环境下,数组便是一组可能用统一个名称查找到的、并按影相继成行定位数组且给定了数组元素的序列号(数)的变量。数组利便于对同样类型的数据排序。数组的一个范例例子便是买卖终端的史书数据,比方,收盘、开盘、高点位、低点位、买卖量。这些数据动作简单元素数组的。比方, Close[ 5 ] 指畏缩5个买卖时间的收盘值。两个元素的数组能够是一个单纯外格,个中第一个分量为行而第二个分量则为列。 Array: MyTable[ 10, 5 ]( 0 ); // 一个10行5列的外格。 ... print( MyTable[ 2, 4 ] ); // 打印第二行的第4个元素数组能够包罗任何类型的数值-数字、字串或逻辑值,不过该当为统一类型,个中的初期值正在数组被揭晓时为特定的。 附加用户界说变量揭晓语法:界说:名称(初期数);个中名称为变量名称;初期数为变量起先的数字值。该当预防,附加用户界说变量能够只为数字类型。如上所述,用户界说变量可能正在步调的准备流程中实行修正。这些修正只可行使到智能买卖编制确当前时段,直到奇特的智能买卖编制从图外中删除或客户终端的操作完结。当新的智能买卖编制时段启动时,用户界说变量值将从头初始化。
隔绝语句确保一个For 轮回或一个While轮回早点终止。前例不只注解轮回奉行,也注解了隔绝语句的应用。“Break”语句不只用于轮回主体除外。轮回是嵌套式的,隔绝语句中离其比来的轮回。换言之,隔绝内部轮回的语句并没隔绝外部轮回。
MetaQuotes 4言语供应很众功效,可用于众种众样的场地。这些包罗技巧目标、买卖功效、功夫功效、数学和三角函数功效、数据转换和输出函数,等。 Abs 返回这个数值的绝对值(模块) 语法:Abs函数 (n个外达式) 参数: 数值 AccountName 返回蕴涵用户名的文本串(同义词:AccName ) Alert 爆发蕴涵用户界说数据的对话屏 语法: Alert(...) 参数的任何非零数都能够。 Ceil 返回代外最小亲密整数的一个数字,它等于或大于特定的数值。 语法:Ceil( n个外达式 )
Hour 返回正在24小时刻间内今朝小时的序列数。 iADX -均匀引导行动目次
shift 与今朝条形(畏缩时间数)合联的转换,为数据待取值的凭借。
iWPR -威廉氏百分数领域目标 语法:iWPR( 时间、转换) 参数: 时间 准备时间数; shift 与今朝条形(畏缩时间数)合联的转换,为数据待取值的凭借。
IsDemo 若是智能买卖编制编制正在试用帐户运转,返回逻辑值,不然会返回过失值. IsIndirect 若是应用反向办法对特定器材实行准备,会返回无误的逻辑值,不然会返回过失值。
beginbar 流露条形的转换,与今朝条形相合,并从中取值。 periods时间 准备奉行凭借的时间数
Minute 返回今朝小时的分钟序列数。 Mod -返回代外着一个接着一个的数值的整数 语法:Mod( n个外达式1, n个外达式2)
参数的任何非零数均能够。 PrintTrade 存储日记中奇特部位的细节 语法: PrintTrade( 部位 ) 参数:部位 正在买卖终端里已开仓部位数字 Rand 返回一个爆发的伪随机数字。正在应用此函数之前,伪随机数字发作器使用Srand函数调度到初始状况。若是伪随机数字发作器无须,就正在启动步调时一次调度到初始状况。 Round 返回代外最亲密整数的特天命值 语法: Round( n个外达式) 参数: 一个数值 ServerAddress 以文本串的形势返回任职器IP地点 SetArrow 设定图外画图符号 语法: SetArrow( 功夫、价值、符号和颜色) 参数: time -参照图外第有时间; price -参照图外第一价值; symbol -从Wingdings字体设定符号 的数值; color -图外颜色
Sin -准备并返回代外弧度角度的数值 语法:Sin( n个外达式) 参数: 数值 Sqrt -准备和返回特定正数值的平方根 语法: Sqrt( n个外达式 ) 参数: 正数值 Srand 设定伪随机数字发作器到初始状况。若是应用发作器,将其正在启动步调时一次性配置到初始状况。初始配置所用的最佳值便是功夫函数回归的数字-正在此环境下,爆发挨次的随机性就增大。 语法:Srand( 功夫) 参数: 正数值 Symbol 返回智能买卖编制运转的金融工签字称的文本串。
咱们现正在就创修智能买卖编制,并正在运转圭臬的光滑异同搬动均匀线目标,该编制具有较强的收获才干,援手追踪止损和最大的保证平安操作。 下面所给的例子,买卖通过对简单的部位实行开仓和管制。
众头进场 MACD目标正在零点之下, 向上走,或由下行信号线穿过。
空头进场 MACD目标正在零点以上, 向下走,或由上行信号线穿过。
众头退场-通过奉行收获限额,搬动止损或当MACD目标穿过信号线(MACD目标正在零点以上, 向下走,或由上行信号线穿过)
空头退场-通过奉行收获限额,搬动止损或当MACD目标穿过信号线(MACD目标正在零点以下, 向上走,或由下行信号线穿过)
紧急提示:为了消弭MACD指针于咱们的阐明显现的微不敷道的改观(图外上的“小山丘”),咱们引入其它一种管制画图中的“小山丘的巨细”的门径如下:指针巨细应起码为最低价值的5个单元(5*Point,流露USD/CHF = 0.0005和USD/JPY = 0.05)。
将鼠标指针点到导航窗口的智能买卖编制区,按鼠标右键,正在显现的菜单里选中“创修”指令。智能买卖编制的启动诱导哀求你进入某些数据。正在显现的窗口,咱们写入智能买卖编制名称(Name)-MACD 样本,作家(Author)-指示你的名字,连合(Link)-连合到网站,正在阐明(Notes)里写入-以MACD为根蒂的智能买卖编制测试样本。
转载请注明出处。