首页 MT4编写 MQ语言简单说明与教程

MT4编写 MQ语言简单说明与教程

举报
开通vip

MT4编写 MQ语言简单说明与教程MQ语言简单说明与教程 关键字:programtrader MT4 EA MQ MQLⅡ 本文来自:程序化交易者(www.programtrader.net) 详细出处参考:http://www.programtrader.net/a/MT4/2010/0913/572_3.html “人工智能系统”是一允许客户策划自己的投资交易战略的具有革新性的工具。 人工智能系统是使交易过程操作自动化,使客户从实时市场监控的繁重公事解放出来的系统。许多专业客户使用多重交易系统以便在不同市场多变的环境下操作。通常他们在...

MT4编写 MQ语言简单说明与教程
MQ语言简单说明与教程 关键字:programtrader MT4 EA MQ MQLⅡ 本文来自:程序化交易者(www.programtrader.net) 详细出处参考:http://www.programtrader.net/a/MT4/2010/0913/572_3.html “人工智能系统”是一允许客户策划自己的投资交易战略的具有革新性的工具。 人工智能系统是使交易过程操作自动化,使客户从实时市场监控的繁重公事解放出来的系统。许多专业客户使用多重交易系统以便在不同市场多变的环境下操作。通常他们在一些知名的 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 软件包,如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—“!”(非)。逻辑运算有相应的固定词OR,AND,NOT。 例如: If FreeMargin>100 and FreeMargin<1000 then print("Free margin is", FreeMargin); 记住,当OR和AND是重置的,那么,数据就得计算两次。NOT是第一次序的,即NOT仅仅适用于单一值。 例如: Variable: Condition1( True ); ... Condition1 = FreeMargin >= 1000; (注:freemargin 大于等于1000时,condition1为true;否则为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). 逻辑算式 AND、OR、NOT 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, ServerAddress, SetArrow, SetObjectText, SetOrder, SetText, Sin, Sqrt, Srand, Symbol, Tan, TimeToStr, Year 4). 预设变量(用户自定义变量) Lots, StopLoss, TakeProfit, TrailingStop 5). 预设交易终端变量 AccNum, AccountNumber, Ask, Balance, Bars, Bid, Close, Credit, Equity, FreeMargin, High, Low, Margin, Open, Point, PriceAsk, PriceBid, PriceHigh, PriceLow, PriceTime, Time, TotalProfit, TotalTrades, Volume. 6). 预设固定函数的参量(宏) MODE_CLOSE, MODE_EMA, MODE_HIGH, MODE_LOW, MODE_MAIN, MODE_MINUSDI, MODE_OPEN, MODE_PLUSDI, MODE_SIGNAL, MODE_SMA, MODE_STOPLOSS, MODE_TAKEPROFIT, MODE_VOLUME, MODE_WMA, OBJ_HLINE, OBJ_SYMBOL, OBJ_TEXT, OBJ_TRENDLINE, OBJ_VLINE, OP_BUY, OP_BUYLIMIT, OP_BUYSTOP, OP_SELL, OP_SELLLIMIT, OP_SELLSTOP, SYMBOL_ARROWDOWN, SYMBOL_ARROWUP,SYMBOL_CHECKSIGN, SYMBOL_STOPSIGN, SYMBOL_THUMBSDOWN, SYMBOL_THUMBSUP, VAL_CLOSEPRICE, VAL_CLOSETIME, VAL_COMISSION, VAL_COMMENT, VAL_LOTS, VAL_OPENPRICE, VAL_OPENTIME, VAL_PROFIT, VAL_STOPLOSS, VAL_SWAP, VAL_SYMBOL, VAL_TAKEPROFIT, VAL_TICKET, VAL_TYPE. 事实上,上述固定词是宏命令,语法分析器用数值代替它们。宏命令是用来简化用户编写程序引用函数的:即用一些方便赋有含义的词来代替一些函数参量数值。这也同样适用于颜色的名称。 7). 颜色 liceBlue, AntiqueWhite, Aqua, Aquamarine, Azure, Beige, Bisque, Black, BlanchedAlmond, Blue, BlueViolet, Brown, BurlyWood, CadetBlue, Chartreuse, Chocolate, Coral, CornflowerBlue, 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Ⅱ语言的命令结构 4.2.1变量说明和描述< /H3> 在计算过程中储存临时数据需要用到变量。变量是在程序的最开头用关键词、数组、定义来描述。这些词是可以用复数形式的。这些词通常在描述变数语句的开端。而这些词之间的区别在于:“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条件语句< /FONT> IF-THEN条件语句实现了控制运行系统指令的顺序的功能。这个语句可以由不同方式编写。语法如下: if Condition then Statement;or if Condition then begin //推荐使用 Statement; Statement; ... end; 当条件是逻辑表达式使用了“True” 或 “False”时;STATEMENT(语句)可以是MQLⅡ语言中的任何指令。算式括号(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Ⅱ语言中的任意语句都代表一合法指令,变量描述除外。因为,严格的讲,变量描述不是一可执行指令。 ★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Ⅱ语言编写的任何指令; 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 – 收盘价 Credit – 保证金 Equity – 账户的资金状况,包括未实现润 FreeMargin – 交易账户的自由保证金—也用来账户资金的实用率 High – 一段时间的最高价 Low – 一段时间的最低价 Margin – 用于支撑未平仓合约的资金 Open – 开盘价 Point –当前金融工具(人工智能系统现在正在使用的金融工具)的点数,如D/JPY - 0.01, USD/CHF - 0.0001 PriceAsk – 在MARKET WATCH(市场观察)窗口显示的现时卖出价 PriceBid - c在MARKET WATCH(市场观察)窗口显示的现时买入价 PriceHigh – 24小时内最高卖出价 PriceLow - 24小时内最高买入价 PriceTime - 在MARKET WATCH(市场观察)窗口显示的当前时间 Time –报价表上的棍所表时间 TotalProfit – 所有未平仓合约的总未实现利润 TotalTrades – 在交易终端的未平仓合约以及延迟了的买卖盘指令的总数 Volume – 交易总额(过去一段时间的交易总额) 须指出的是在过去一段时间内Close, Open, High, Low, Volume, Time是历史数据数列(级数树列)且允许存取这样的数据。 4.4. 构建函数 MetaQuotes LanguageII 为不同的用途提供了不同的函数。包括技术指针, 交易函数, 时间函数, 数学和三角函数, 数据转换和输出函数等。 Abs- 返回这个数值的绝对值(模块) 语法 : Abs(nExpression) 参数: 数值。 AccountName –返回到包含用户名的文本串(与AccName同义) 。 ★Alert- 生成包含用户定义的数据的屏幕。 语法: Alert(...) 例子: alert("FreeMargin is ", FreeMargin); 弹出警告窗 freemargin的值。 任何非零数字都可作为参数。 Ceil – 返回等于或大于这个指定的数值的最小的最接近的整数。 语法: Ceil(nExpression) 参量: 数值。 CloseOrder – 平仓单。 语法: CloseOrder( order, lots, price, slippage, color ) 参量: order-开立头寸的顺序号; lots- 手数; ?价格 - 优先平仓价; /*啊啊~问号是神马?price?原文真水,我无语*/ slippage- 最大价格滑动; color- 表框的颜色。 Comment- 在图表的左上角产生一个用户自定义的数据。 语法 : Comment(...) 任何非零数字都可作为参数。 Cos –计算并返回用弧度表示的角的余弦。 语法: Cos(nExpression) 参数: 数值 CurTime – 返回自1970 年1月1 日以来所经过的秒数 。 ★Day- 返回当天的月份数值。 DayOfWeek – 返回当天的星期数值。1 - 星期天 , 2 - 星期一..., 7 - 星期六。 DeleteOrder – 删除过期定单。 语法 : DeleteOrder ( order) 参数: order:过期的订单号。 Exp –返回对具体的数值进行说明的数字 语法 : Exp(nExpression) 参数: 数值。 ★Floor- 返回小于或等于特定数值的最接近的最大的整数值。 语法: Floor(nExpression) 参数: 数值。 ★Highest-返回指定时期最高开盘价、最高最低价、最高最高价、最高收盘价及总交易量(取决于参数类型) 语法: Highest ( type, beginbar, periods ) 参数: type—可采用以下形式返回变数:MODE_OPEN, MODE_LOW, MODE_HIGH, MODE_CLOSE, MODE_VOLUME beginbar –相对于当前棒的位移,从中可以获取数据 periods-计算的时期 ★Hour-返回当前小时数值。 iADX – 一般活动指标 语法: iADX ( period, mode, shift ) 参数: period – 计算期间数 mode –可采用以下数据类型: MODE_MAIN(main indicator), MODE_PLUSDI(line +DI), MODE_MINUSDI(line -DI). shift –相对于当前棒(时间向后推移)的位移,数据来源于此 iATR –平均时间间隔指标 语法:iATR( period, shift ) 参数: period – 计算期间数 shift –相对于当前棒(时间向后推移)的位移,数据来源于此 iBANDS – 滚动带指标 语法: iBANDS( period, deviation, mode, shift ) 参数: period – 计算期间数 deviation – 偏移 mode –可采用以下数据类型: MODE_MAIN(主指标), MODE_PLUSDI(line +DI), MODE_MINUSDI(line -DI). shift –相对于当前棒(时间向后推移)的位移,数据来源于此 iCCI – 交易记录指针 语法: iCCI( period, shift ) period – 计算期间数 shift –相对于当前棒(时间向后推移)的位移,数据来源于此 ★iMA – 平均移动指标 语法: iMA( period, mode, shift ) period – 计算期间数 mode –可采用以下计算模式: MODE_SMA简单, MODE_EMA指数, MODE_WMA有利的. shift –相对于当前棒(时间向后推移)的位移,数据来源于此 ★iMACD –平均移动收敛/发散指标 语法:iMACD( fast_ema_period, slow_ema_period, signal_period, mode, shift ) 参数: fast_ema_period –计算快速移动平均线的期间数(通常为12) slow_ema_period –计算慢速移动平均线的期间数(通常为26) signal_period –计算信号移动平均线的期间数 mode –数据源可采取的形式: MODE_MAIN (主指标), MODE_SIGNAL (单线); shift –相对于当前棒(时间向后推移)的位移,数据来源于此 period -计算期间数 iMFI – 现金流量指标 语法: iMFI( period, shift ) period – 计算期间数 shift –相对于当前棒(时间向后推移)的位移,数据来源于此 iMOM – 要素指标 语法: iMOM( period, shift ) period – 计算期间数 shift –相对于当前棒(时间向后推移)的位移,数据来源于此 iRSI – 相对强弱指数 语法: iRSI( period, shift ) period – 计算期间数 shift –相对于当前棒(时间向后推移)的位移,数据来源于此 iSAR - Parabolic SAR. 语法: iSAR( step, maximum, shift ) 参数: step – 增量,一般为0.02 maximum –最高价,一般为0.2 iSTO – 随机指数. 语法: iSTO( %Kperiod, %Dperiod, slowing, method, mode, shift ) 参数: %Kperiod - %K线时期; %Dperiod - %D线时期; slowing –不活跃价格; method –可采用以下计算方法: MODE_SMA (简单平均), MODE_EMA (指数), MODE_WMA (weighted); mode –可采用以下形式的数据源: MODE_MAIN (主指标线), MODE_SIGNAL (单一指标线); shift –相对于当前棒(时间向后推移)的位移,数据来源于此 iWPR - Williams 百分比范围指标 语法: iWPR( period, shift ) period – 计算期间的数值 shift –相对于当前棒(时间向后推移)的位移,数据来源于此 IsDemo – 如果Expert Advisor正在运行交易账户,返回逻辑真值; 否则,返回假值 IsIndirect – 如果使用相反的方法计算指定商品,返回逻辑真值;否则,返回假值 LastTradeTime – 返回最近一次活动(下单、取消单、平仓、修改单),距离1970年1月1日零点的秒数 Log – 返回指定正数的对数 语法: Log( nExpression ) 参数:正数 ★Lowest –返回指定期间最低开盘价、最低最低价、最低最高价、最低平仓价、交易量(取决于参数类型) 语法: Lowest( type, beginbar, periods ) 参数: type –可采用以下形式: MODE_OPEN, MODE_LOW, MODE_HIGH, MODE_CLOSE, MODE_VOLUME beginbar –相对于当前棒的位移,从中可以获取数据 periods – 计算期间数 Minute –当前分钟数 Mod – 返回余数 语法: Mod( nExpression1, nExpression2 ) 参数:数值1,数值2 ModifyOrder –修改以前开立的定单或过期单 语法: ModifyOrder( order, price, stoploss, takeprofit, color ) 参数: order –以前开立单的号码; price –新价格(仅对过期单); stoploss – 止损水平; takeprofit –止盈水平; color – 图表颜色. Month –返回当前月数 MoveObject –指定对象的移动. 语法: MoveObject( name, type, time, price, time2, price2 ) 参数: name –以文本串形式表示的名称; type –对象类型可采用以下形式的: OBJ_HLINE (水平线), OBJ_VLINE (垂直线), OBJ_TRENDLINE (趋势线), OBJ_SYMBOL(设置符号), OBJ_TEXT (文本串); time –第一个图表指定点的时间; price -第一个图表指定点的价格; time2 -第二个图表指定点的时间; price2 -第二个图表指定点的价格 NumberToStr –以指定长度形式将数值返回为文本串形式 语法: NumberToStr( number, precision ) 参数: number –指定数值; precision –精确格式,小数点后的位数. Ordervalue –返回指定定单的价值. 语法: Ordervalue( position, mode ) 参数: position –交易终端列表中定单的头寸,初始值为1; mode –数值返回的形式可采用以下几种: VAL_TICKET (定单号), VAL_OPENTIME (开单时 间), VAL_TYPE (定单类型), VAL_LOTS (请求的手数), VAL_SYMBOL (商品名称, 用本文形式表示), VAL_OPENPRICE (开盘价), VAL_STOPLOSS (止损水 平), VAL_TAKEPROFIT (止盈水平), VAL_CLOSEPRICE (收盘价 格), VAL_COMISSION (佣金数量), VAL_SWAP (头寸转滚费用), VAL_PROFIT (交易利润), VAL_COMMENT (头寸具体 说明,文本形式), VAL_CLOSETIME (平仓时 间). Ord – 同Ordervalue. Period – 返回所定义的使用期间的分钟数 Pow –返回nBaseExpression乘以nBaseExpression的幂. 语法: Pow( nBaseExpression, nExponentExpression ) 参数:数值1,数值2 Print – 将用户定义的数据录入系统日志. 语法: Print(...) 可使用任意非零数值. PrintTrade – 将头寸详细数据储存到日志中. 语法: PrintTrade( position ) 参数:交易终端开仓号 Rand –返回产生的伪随机号.使用这个函数之前,必须使用Srand函数,将伪随机号发生器设置到初始头寸。一旦初始头寸中设置了伪随机号发生器,随机号发生器将在开始程序中出现。 Round –返回指定数值的四舍五入的整数. 语法: Round( nExpression ) 参数:数值. ServerAddress – 以文本串形式返回服务器IP地址. ★★SetArrow – 在图表上设置符号. 语法: SetArrow( time, price, symbol, color ) 参数: time – 图表上指定点的时间; price –图表上指定点的价格; symbol – 字体设置中符号的数值号 color –符号颜色. SetObjectText –将指定对象定义为文本串 语法: SetObjectText( name, text, font, size, color ) 参数: name –对象名称; text –指定文本; font –字体名称; size – 字体大小; color –文本颜色. ★★SetOrder – 开立头寸或设置定时单的主函数 语法: SetOrder( operation, lots, price, slippage, stoploss, takeprofit, color ) 参数: operation – 操作类型可采用以下形式:: OP_BUY(开立买入单), OP_SELL (开立卖出单), OP_BUYLIMIT(开立买入限价单), OP_SELLLIMIT(开立卖出限价单), OP_BUYSTOP(开立买入止损单), OP_SELLSTOP (开立卖出止损单); lots –手数; price – 优先平仓价格; slippage – 最大OP_BUY 及 OP_SELL滑动价格; stoploss – 止损水平; takeprofit – 止盈水平; color – 调用函数时,图表上箭头的颜色. ★SetText –为指定头寸在图表上设置文本串. 语法: SetText( time, price, string, color ) 参数: time –图表上指定点的时间; price -图表上指定点的时间; string –文本串; color –文本颜色. Sin – 计算返回以弧度表示的角的正弦. 语法: Sin( nExpression ) 参数:.数值 Sqrt –计算返回指定正数的平方根. 语法: Sqrt( nExpression ) 参数:正数 Srand – 为初始头寸设置伪随机发生器,一旦发生器被设置,它将 出现在开始程序中。初始设置使用的最佳值是时间函数返回的值。语法:Syntax: Srand( Time ) 参数:正数 Symbol –返回Expert Advisor 中运行的金融商品的文本串. Tan -计算返回以弧度表示的角的正切. 语法: Tan( nExpression ) 参数:数值. TimeToStr –返回当前距1970年1月1日零时经历的时间,以文本串“年年年年.月月.日日时时:分分”表示 语法: TimeToStr( Time ) 参数:正数. Year –返回当前年份的数值. /*以上内容全部来自文章头部的链接,本人稍加辛苦,加以重新排版编辑2011-6-4*/
本文档为【MT4编写 MQ语言简单说明与教程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_454613
暂无简介~
格式:doc
大小:93KB
软件:Word
页数:43
分类:金融/投资/证券
上传时间:2013-09-03
浏览量:77