MQL4编程参考中⽂版
MetaTrader 4 平台MetaQuotes Language 4 (MQL4)
编程参考
(简体中⽂第1
版)
严泽平修订
前⾔
MetaQuotes (迈达克)软件公司是全球外汇、CFD和期货在线交易软件的领导⼚商之⼀。该公司⼀直致⼒于在线⾦融交易软件的研制和专业开发,MetaTrader 4交易平台(MT4)就是该公司在此领域多年研究成果,全球⾦融机构使⽤其开发的MT4交易平台可以为客户提供专业的、⾼质量的在线交易服务。⽬前,全球有100余家经纪公司和银⾏采⽤了MT4交易平台向客户提供在线⾦融交易服务,国内民⽣银⾏也选⽤了 MT4作为外汇交易平台。
MT4交易平台是MetaQuotes公司专业开发的产品,它⽐世界上那些⼤型经纪公司或银⾏⾃研的⾯向普通客户的交易平台更专业、运⾏更稳定、功能更强悍, 深受朋友们喜爱、好评,特别是其内置的⾯向⾼端客户的MQL4编程语⾔,强⼤的编程能⼒⽆⼈能与之⽐肩,是MT4平台最⼤特⾊之⼀。
MetaQuotes Language 4 (MQL4)是MT4平台客户端程序内置的交易策略编程语⾔。这种语⾔允许⽤户创建⾃⼰的智能交易程序(EA),使⾃⼰的交易操作能够⾃动地执⾏,此外,⽤户还可以使⽤MQL4创建⾃定义指标、脚本和库。
MQL4编程语⾔包含了⼤量可以分析当前数据及历史数据所必备的函数,像⼤多数计算机程序设计语
⾔⼀样,它也包含了多种数据类型、各种运算符、预定义常量、数组、控制语句和丰富的数据处理函数,内置了⼀些基本的技术指标和⽤户定单管理命令等。
集成在客户端的MetaEditor 4(ME4⽂本编辑器)是编写MQL4程序源码的集成开发环境。ME4⽀持语法⾼亮显⽰,带有在线帮助系统,⽤户可在客户端内利⽤历史数据模拟运⾏程序,⾃⾏评估程序运⾏效果。
鉴于MT4平台在国内已有应⽤,在国际上已有百余家公司采⽤,国内炒汇朋友不可避免要⽤到该平台,学习和应⽤MQL4语⾔就是⾼⼿们抢占先机、⾛向辉煌的必经之路。MQL4语法类似于C语⾔,⽽C语⾔⼜是国内院校基本教学语⾔, 已开设多年,国内应有⼤批朋友熟悉其语法结构,可谓驾轻就熟,易学易⽤,稍有编程修养的朋友经过短期学习和钻研,应该能够很快掌握,熟练应⽤,因此,MQL4特别适合会编程的炒汇⾼⼿实现⾃⼰的交易策略,或向他⼈提供⾃⼰开发的智能交易程
序。今后,它还可能为你成就⼀番事业,创造⼀份新的⾼收⼊职业, 前景可期。或许,下⼀个汇市传奇就是你创造的,你的故事会让后⼈久久津津乐道,⽆限崇敬。
由于迈达克公司进⼊中国市场时间不长,在上海设有分公司,但本地化⼯作似乎做得不够理想。作为EA编程必读资料,迈达克公司⽹站在线编程参考资料分别提供了俄语、英语和中⽂版本,其中中⽂版资料⼤量采⽤了机器翻译,再辅以⼈⼯翻译,可读性较差,⽤词、⽤语不太符合国⼈阅读习惯,技术
指标和术语翻译有违内地惯例,甚⾄有些字、词、句翻译错误,这给国内朋友学习和应⽤带来了不便之处。本⼈在学习中也深受其扰,参照其英⽂版和中⽂版,本⼈利⽤⼯作之余⼀边学习,⼀边重新对其进⾏了翻译、整理和校对,对个别明显与上下⽂语境和语义不符的地⽅,借助俄语到英语翻译软件进⾏了复核,经过近⼀个⽉断断续续地努⼒,总算整理成⽂,希望对⼤家有⽤,也算是本⼈为推动MT4平台在国内的应⽤尽点绵薄之⼒。
本⼈觉得翻译MQL4编程参考资料真是不太容易。译者需要有良好的英语基础、程序设计语⾔知识(尤其是C/C++语⾔)、股票和外汇基本理论才能得⼼应⼿,缺⼀不可。翻译这种跨专业的外⽂资料,特别是涉及到各领域的概念、术语、技术指标名称和惯⽤语等要符合国⼈阅读习惯、使⽤习惯和专业习惯,其实并⾮易事。本⼈正巧具备了这⼏个⽅⾯知识,就信⼿为⼤家做点⼯作吧,对我来说,既是⼀次挑战,也是⼀次锻炼,更是⼀段学习的历程。
在这⾥,还是要感谢MetaQuotes公司给我们提供了业界领先的软件,期待着⽀持⾯向对象编程的MQL5早⽇⾯世,感谢原中⽂版作者⾟勤劳动。
限于⽔平和时间,⽂中可能还有不当之处,望各位朋友见谅并提宝贵意见。欢迎来信斧正,本⼈将在第⼆版中收录、致谢,继续维护本⽂档。
有梦才会有追求,愿⼤家都发财!
严泽平
2008-4-29于磬园校区,⼀座美丽的校园MQL 简介............................................ -1 -
基础 (2)
语法....................................................................... -2 - 注释 ............................................................... -2
- 标识符 ............................................................. -3
- 保留字 (3)
数据类型................................................................... -3 , 类型转换 .......................................................... -4 -
-整型常量 ........................................................... -4
, 字符常量 ........................................................... -5
- 布尔型常量 ......................................................... -5
- 浮点常量(双精度常量).............................................. -6
, 字符串常量 ......................................................... -6
- 颜⾊常量 ........................................................... -6
- ⽇期时间常量 (7)
运算符和表达式............................................................. -8 - 表达式 ............................................................. -8
- 算术运算符 (8)
,赋值运算符 ........................................................ -9 -
-关系运算符 ......................................................... -9
- 布尔运算符 ........................................................ -10
, 位运算符 .......................................................... -10
- 其它运算符 ........................................................ -11
- 优先级规则 (11)
控制语句................................................................. -13 --语句块 .......................................................... -13 -
-表达式操作符 (13)
,break 语句 ...................................................... -14 -
,continue 语句 ................................................... -14 -
,return 语句 ..................................................... -14 -
,if-else 语句 .................................................... -15 -
,switch 多分⽀语句................................................ -16 -
,while 循环语句................................................... -17 -
,for 循环语句 .................................................... -17 -函数..................................................................... -18 -,函数调⽤........................................................ -19 -
-特殊函数 ........................................................ -20 -变量...................................................................... -21 --局部变量 .. (22)
,形式参数 ........................................................ -22 -
-静态变量 ........................................................ -24 -
-全局变量 ........................................................ -24 -
-定义外部变量 .................................................... -24 -
-变量初始化 ...................................................... -25
- 外部函数定义 .................................................... -25 -编译预处理 ................................................................ -26
- 预定义常量 ...................................................... -26
- 编译控制 ........................................................ -27
- ⽂件包含 ........................................................ -28
, 函数导⼊ ........................................................ -28 -
预定义标准常量 ........................................ -30
- 序列化数组 .......................................................... -30 - 图表时段 ............................................................ -30 - 交易类型............................................................ -31 --价格常量 ............................................................ -31 - 市场信息............................................................ -31 --画线样式 ............................................................ -33 --箭头代码 (33)
,Wingdings 符号....................................................... -34 -,Web颜⾊名称......................................................... -34 --指标线.............................................................. -35 - ⼀⽬均衡表代码....................................................... -35 - 移动平均线计算⽅法 (36)
,信息框 .............................................................. -36 --对象类型 ............................................................ -38 --对象属性............................................................ -39 - 对象可视性 .......................................................... -41 -,未初始化原因代码..................................................... -41 --特殊常量 ............................................................ -42 - 错误代码............................................................ -42 -
预定义变量 (46)
,获取最新卖价 Ask ..................................................... - 46 --获取图表柱数Bars .................................................... -46 - 获取最新买价Bid ..................................................... -47 - 获取每个柱⼦收盘价Close ⼝.......................................... -47 - 获取汇率⼩数位数Digits .
(48)
,获取每个柱⼦最⾼价High⼝............................................ - 48 --获取每个柱⼦最低价Low⼝............................................. -48 -,获取每个柱⼦开盘价Open⼝............................................ - 49 --获取当前货币对点⼤⼩Point ........................................... -50 - 获取每个柱⼦开盘时间Time ⼝......................................... -50 --获取每个柱⼦⼀跳成交量Volume ⼝..................................... -51 -
程序运⾏ ............................................ -52
- 程序运⾏............................................................ -53 -■导⼊函数调⽤........................................................ -53 . 运⾏时错误代码...................................................... -55 -
账户信息 ............................................ -66 -
■获取账户余额 AccountBalanceO ........................................ - 66 -■获取账户信⽤额度AccountCreditO ...................................... -67 -■获取账户注册的外汇公司名AccountCompany() ............................ - 67 -
■获取账户货币名称 AccountCurrencyO ................................... - 67 -■获取账户净值 AccountEquityO ......................................... - 67 -■获取账户可⽤保证⾦AccountFreeMargin() ............................... - 67 -■检查可⽤保证⾦ AccountFreeMarginCheck () ............................ - 68 -■可⽤保证⾦计算模式 AccountFreeMarginMode() .......................... - 68 -■获取当前账户杠杆⽐率AccountLeverageO ................................ -68 -■获取账户已⽤保证⾦AccountMarginO .................................... - 68 -■获取账户名称 AccountName() .......................................... - 69 -■获取当前账户账号 AccountNumber。 .................................... - 69 -■获取账户赢利⾦额AccountProfitO ...................................... - 69 -■获取连接服务器名称AccountServer() ................................... - 69 -■获取停⽌交易标准 AccountStopoutLevel() .............................. - 69 -■获取停⽌交易标准的计算⽅式AccountStopoutMode () ..................... - 70 -
数组处理函数 (70)
■搜索数组 ArrayBsearch() ............................................. - 70 -■数组复制 ArrayCopy () ............................................... - 71 -■复制柱⼦数据到⼆维数组ArrayCopyRates () ............................. - 72 -■复制柱⼦数据到⼀维数组ArrayCopySeriesO .............................. -
73 -■返回数组维数 ArrayDimension() ....................................... - 74 -■判断序列数组 ArrayGetAsSeries () .................................... -
74 -■数组初始化 ArraylnitializeO ......................................... - 75 -■判断数组是否序列化ArraylsSeriesO .................................... -
75 -■返回数组中最⼤值位置ArrayMaximum。.................................. - 76 -■返回数组中最⼩值位置ArrayMinimum() .................................. - 76 -■获取数组元素个数 ArrayRange() ....................................... - 76 -■重设数组⼤⼩ ArrayResizeO ........................................... - 77 -■序列化数组 ArraySetAsSeries() ....................................... - 77 -■返回数组⼤⼩ ArraySize () ........................................... - 78 -■数组排序 ArraySort () ............................................... - 78 -
检测当前客户端状态 (79)
■获取最新产⽣的错误信息GetLastErrorO ................................. - 79 -■判断连接状态 IsConnectedO ........................................... -79 -■判断是否是模拟账户IsDemoO .. (80)
■判断是否允许调⽤DLL函数IsDllsAllowedO .............................. -80 -
■判断智能交易是否开启IsExpertEnabled() ............................... - 80 -■判断是否允许调⽤库函数IsLibrariesAllowed() .......................... - 81 -■判断智能交易是否为优化模式IsOptimization() .......................... - 81 -■判断智能交易是否中⽌IsStopped() ..................................... - 81 -■判断智能交易是否在测试模式中运⾏IsTesting() .. (82)
■判断智能交易是否允许交易IsTradeAllowed() ............................ - 82 -■判断智能交易线程是否忙IsTradeContextBusy() .......................... - 82 -■判断智能交易是否⽤“可视模式”测试IsVisualModeO (83)
■获取未初始化原因 UninitializeReason() ............................... - 83 -
客户端信息 ........................................... -84 -
■获取客户端所属公司名称TerminalCompany() ............................. - 84 -■获取客户端名称 TerminalName() ....................................... - 84 -■获取客户端⽂件⽬录TerminalPath() .................................... - 84 -
常规函数 (84)
■弹出警告窗⼝ Alert() ................................................ -84 -■在图表左上⾓标注信息Comment。....................................... - 85 -■取回运⾏时间 GetTickCount() ......................................... - 85 -■获取市场观察窗⼝中数据MarketInfo() .................................. - 86 -■显⽰信息框 MessageBox () ............................................ - 86 -■播放声⾳⽂件PlaySound () .. (87)
■输出结果 Print () (87)
■发送⽂件到FTP服务器SendFTPO (88)
■发送电⼦邮件 SendMail() ............................................. - 88 -■暂停程序运⾏Sleep。................................................. -89 -
数据类型转换函数 (89)
■ASCII 码转换成字符串 CharToStr () (89)
■浮点型数据转换成字符串DoubleToStr() (90)
■标准化双精度型数值NormalizeDouble() ................................. - 90 -■字符串型数据转换成浮点型StrToDoubleO .. (90)
■字符串数据转换成整型StrToIntegerO ................................... -91 -■字符串转换成⽇期时间StrToTime ....................................... -91 -■⽇期时间型数据转换成字符串TimeToStr() .................................-91 -
⾃定义指标 ..........................................-92 -
■指标缓冲区 IndicatorBuffers() ....................................... - 92 -■设置指标精度 IndicatorDigits ...............
......................... - 94 -■设置⼀个箭头符号 SetIndexArrow() .................................... - 96 -■绑定数组到缓冲区SetIndexBuffer() .................................... - 96 -■设置指标线起始位置SetIndexDrawBegin ................................. - 97 -■设置图表画线空值SetlndexEmptyValue ................................. - 98 -■设置画线说明 SetlndexLabelO ......................................... - 98 -■设置画线偏离值SetlndexShiftO ....................................... - 100 -
■设置指标线样式SetlndexStyleO ....................................... - 101 -■设置指标⽔平线值SetLevelValueO ..................................... -102 -
⽇期时间处理函数 (102)
■获取今⽇是本⽉第⼏天Day() (102)
■获取今⽇是星期⼏DayOfWeek() ........................................ - 103 -■获取今⽇是本年第⼏天DayOfYear() .................................... -103 -■获取当前⼩时数Hour() ............................................... - 103 -■获取当前分钟数Minute() ............................................. - 104 -■获取当前的⽉份Month。. (104)
■获取当前的秒数Seconds() ............................................ - 104 -■获取服务器时间TimeCurrent() ........................................ - 104 -■获取指定⽇期中天数TimeDayO ......................................... - 105 -■
获取指定⽇期是星期⼏TimeDayOfWeek() ................................ - 105 -■获取指定⽇期是⼀年中第⼏天TimeDayOfYear() .......................... - 105 -■获取指定时间中⼩时数TimeHour() ..................................... - 105 -■获取当前电脑时间TimeLocalO ......................................... - 106-■获取指定时间中分钟数TimeMinute() ................................... - 106 -■获取指定时间中⽉份TimeMonth() ...................................... - 106 -■获取指定时间中秒数TimeSeconds() .................................... - 107 -■获取指定时间中年份TimeYear ......................................... - 107-■获取当前年份Year。. (107)
⽂件操作函数 (107)
■关闭⽂件 FileCloseO ................................................ - 108 -■删除⽂件FileDelete() (108)
■清除⽂件缓冲区并存盘FileFlush() (109)
■判断⽂件指针是否到⽂件尾FileIsEnding() ............................. - 109 -■判断⽂件指针是否指向⾏尾FileIsLineEnding() ......................... - 110 -■打开⽂件 FileOpen() ................................................ - 110 -■打开历史⽬录下⽂件FileOpenHistory() ................................ - 111 -■⽂件读取 FileReadArray () .......................................... - 112 -■读取⽂件双精度数据FileReadDoubleO .................................. -112 -■读取⽂件中整数 FileReadInteger() ................................... - 113 -■读取⽂本⽂件中数值FileReadNumber() ................................. - 113 -■读取⽂件中字符串FileReadString() ............................
....... - 114-■移动⽂件指针FileSeek() ............................................. - 115 -■获取⽂件⼤⼩FileSize() ............................................. - 115 -■获取⽂件指针位置FileTell() .. (116)
■写⼊ CSV ⽂件 FileWrite() ............................................. - 116-■数组内容写⼊⽂件FileWriteArray() ................................... - 117 -MetaQuotes Language 4 (MQL4)编程参考
■双精度数值写⼊⽂件FileWriteDoubleO ................................. - 118-■整数写⼊⽂件 FileWritelnteger () ................................... -118 -■字符串写⼊⽂件 FileWriteString。 ................................... - 119 -
全局变量 (120)
■检查全局变量是否存在GlobalVariableCheck() .......................... - 120 -■删除全局变量 GlobalVariableDel() ................................... - 121 -■获取全局变量值 GlobalVariableGet() ................................. - 121 -■获取指定索引的全局变量名GlobalVariableName() ....................... - 121 -■设置全局变量值 GlobalVariableSet() ................................. - 122 -■根据条件设置全局变量值 GlobalVariableSetOnCondition() .............. - 122 -■删除全局变量 GlobalVariablesDeleteAll () ........................... -123 -■获取全局变量总数 GlobalVariablesTotalO ............................. - 124 -
数学和三⾓函数 (124)
可以学习编程的网站
■求绝对值 MathAbs() ................................................. - 124 -■求反余弦MathArccos() .............................................. - 124 -■求反正弦MathArcsin() .............................................. - 125 -■求反正切MathArctan() .............................................. - 125 -■取最⼩整数MathCeil() .............................................. - 126 -■求余弦 MathCos () .................................................. - 126 -■求 e 的蓦 MathExp。................................................ - 127 -■取整数 MathFloor() ................................................. - 127-■求⾃然对数 MathLog () ............................................. - 128 -■求最⼤值 MathMax () ................................................ - 128 -■求最⼩值 MathMin() . (128)
■求模 MathMod() ..................................................... - 129 -■求蓦 MathPow。..................................................... - 129 -■获取随机整数MathRandO . (129)
■求四舍五⼊值 MathRound () .......................................... - 130 -■求正弦 MathSin() ................................................... - 130 -■求平⽅根 MathSqrt() ................................................ - 131 -■获取随机数 MathSrand() ............................................. - 131 -■求正切MathTan () .................................................. - 131 -
对象操作函数 ....................................... -132 -
■创建对象 ObjectCreate() ............................................ - 132 -■删除对象 ObjectDelete() ......................
...................... - 133 -■获取对象说明 ObjectDescription() ................................... - 133 -■查指定对象 ObjectFind() .......................................... - 134 -■获取指定对象的属性值ObjectGet() .................................... - 134 -■获取斐波纳契对象说明 ObjectGetFiboDescription() .................... -135 -■计算并返回柱⼦索引 ObjectGetShiftByValue() ......................... - 135 -■计算并返回指定柱⼦价格值Ob jectGetValueByShift() ................... - 136 -■移动对象 ObjectMoveO ................................................ -136 -
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论