3.MQL4程序设计概览

合集下载

《用MQL4编程》读书笔记(3)

《用MQL4编程》读书笔记(3)

《用MQL4编程》读书笔记(3)
专用编辑器MetaEditor
MetaEditor 是多功能专用编辑器,用于创建、编辑、编译MQL4应用程序。

·文件系统
操盘手、指标、脚本3种程序,分别保存在MT4的子目录\experts,\experts\indicators,\experts\scripts。

MQL4的程序有3种: mq4, ex4, 和 mqh。

mq4是程序源码。

ex4 是3种程序源码编译后生成的文件,可用做库文件。

mqh是包含文件,保存在\experts\include。

其他相关文件,如dll,保存在\experts\libraries。

·程序的创建与使用
MQL4 操盘手、指标、脚本3种程序,用MetaEditor创建。

创建过程简单机械,按照系统帮助操作即可。

成功编译后的程序,文件名出现在MT4的navigator窗。

用鼠标把它”拖拉“到货币对K线图窗,便开始运行。

零基本学MQL4编程

零基本学MQL4编程

零基础学MQL4编程特别说明:本文中主要内容来源于英文版MQL4 Reference 摘译,本人在MQL4 Reference 基础上进行了摘译、整理,加入了部分通俗的文字说明和简明易懂的图片示例等,目的是更易于初学者上手。

如有侵权,请及时联系本人删除。

第一部分初识MQL4一、MQL4概述MetaQuotes Language 4(MQL4)是用于编程交易策略和或自定义指标等的内置语言。

该语言由MetaQuotes Software Corp根据其在创建在线交易平台方面的长期经验开发。

使用这种语言,您可以创建自己的智能交易系统,使交易管理自动化。

这非常适合实施您自己的交易策略。

此外,使用MQL4,您可以创建自己的技术指标(自定义指标),脚本和库。

MetaQuotes Language 4(MQL4)是面向对象的高级编程语言,用于编写自动交易策略,用于分析各种金融市场的自定义技术指标。

它不仅可以编写各种设计用于实时操作的专家系统,还可以创建自己的图形工具来帮助您做出交易决策。

MQL4基于流行编程语言C ++的概念。

该语言具有枚举,结构,类和事件处理。

通过增加嵌入式主类型的数量,MQL4中的可执行程序与其他应用程序之间通过dll的交互现在变得越来越简单。

MQL4语法类似于C ++的语法,可直接对C/C++语言的程序进行编译。

MQL4包含了分析当前和以前收到的报价所需的大量函数,并且具有用于管理交易订单并对其进行控制的内置基本指标和函数。

MetaEditor(文本编辑器)突出显示不同的MQL4语言结构,用于编写程序代码。

它可以帮助用户很容易地在专家系统(也叫智能交易系统)文本中定位自己。

简要指南包含函数、操作、保留字和其他语言结构,并将其分为不同的类别。

MetaQuotes Language 4可以编写具有不同功能和用途的程序:(一)、智能交易系统(EA) 这是连接到某个图表的机械交易系统。

当启动交易系统后,EA开始运行,处理以下事件:初始化事件和取消初始化事件,新的订单接收发送事件,计时器事件,市场变化事件深度,图表事件和自定义事件。

MT4编程语言MQL4入门(全接触)

MT4编程语言MQL4入门(全接触)

MT4编程语言全接触语法[Syntax]代码格式空格建、Tab键、换行键和换页符都可以成为代码排版的分隔符,你能使用各种符号来增加代码的可读性。

注释多行注释使用/* 作为开始到*/ 结束,在这之间不能够嵌套。

单行注释使用// 作为开始到新的一行结束,可以被嵌套到多行注释之中。

示例:// 单行注释/* 多行注释// 嵌套的单行注释注释结束*/标识符标识符用来给变量、函数和数据类型进行命名,长度不能超过31个字节你可以使用数字0-9、拉丁字母大写A-Z和小写a-z(大小写有区分的)还有下划线(_)。

此外首字母不可以是数字,标识符不能和保留字冲突.示例:// NAME1 namel Total_5 Paper保留字下面列出的是固定的保留字。

不能使用以下任何保留字进行命名。

数据类型存储类型操作符其它bool extern break falsecolor static case truedatetime continuedouble defaultint elsestring forvoid ifreturnswitchwhile数据类型[Data types]数据类型概述主要数据类型有:∙Integer (int)∙Boolean (bool)∙ëèòåðàëû (char)∙String (string)∙Floating-point number (double)∙Color (color)Datetime (datetime)我们用Integer类型数据来作为DateTime和Color数据的存储。

使用以下方式可以进行类型站换:int (bool,color,datetime);double;string;Integer 类型十进制: 数字0-9;0不能作为第一个字母示例:12, 111, -956 1007十六进制: 数字0-9;拉丁字母a-f或A-F用来表示10-15;使用0x或者0X作为开始。

最新MQL4命令中文详解手册资料

最新MQL4命令中文详解手册资料

MQL4 Reference MQL4命令手册(本手册采用Office2007编写)2010年2月目录MQL4 Reference (1)MQL4命令手册 (1)Basics基础 (18)Syntax语法 (18)Comments注释 (18)Identifiers标识符 (19)Reserved words保留字 (19)Data types数据类型 (20)Type casting类型转换 (20)Integer constants整数常量 (21)Literal constants字面常量 (21)Boolean constants布尔常量 (22)Floating-point number constants (double)浮点数常量(双精度) (22)String constants字符串常量 (23)Color constants颜色常数 (23)Datetime constants日期时间常数 (24)Operations & Expressions操作表达式 (25)Expressions表达式 (25)Arithmetical operations算术运算 (25)Assignment operation赋值操作 (26)Operations of relation操作关系 (27)Boolean operations布尔运算 (27)Bitwise operations位运算 (28)Other operations其他运算 (28)Precedence rules优先规则 (29)Operators操作符 (31)Compound operator复合操作符 (31)Expression operator表达式操作符 (32)Break operator终止操作符 (32)Continue operator继续操作符 (32)Return operator返回操作符 (33)Conditional operator if-else条件操作符 (34)Switch operator跳转操作符 (35)Cycle operator while循环操作符while (36)Cycle operator for循环操作符for (37)Functions函数 (38)Function call函数调用 (39)Special functions特殊函数 (40)Variables变量 (40)Local variables局部变量 (42)Formal parameters形式变量 (42)Static variables静态变量 (44)Global variables全局变量 (44)Defining extern variables外部定义变量 (45)Initialization of variables初始化变量 (45)External functions definition外部函数的定义 (46)Preprocessor预处理 (47)Constant declaration常量声明 (47)Controlling compilation编译控制 (48)Including of files包含文件 (49)Importing of functions导入功能 (49)Standard constants标准常数 (52)Series arrays系列数组 (52)Timeframes图表周期时间 (52)Trade operations交易操作 (53)Price constants价格常数 (53)MarketInfo市场信息识别符 (54)Drawing styles画线风格 (56)Arrow codes预定义箭头 (57)Wingdings宋体 (58)Web colors颜色常数 (59)Indicator lines指标线 (60)Ichimoku Kinko Hyo (61)Moving Average methods移动平均方法 (61)MessageBox信息箱 (62)Object types对象类型 (64)Object properties对象属性 (65)Object visibility (67)Uninitialize reason codes撤销初始化原因代码 (68)Special constants特别常数 (68)Error codes错误代码 (69)Predefined variables预定义变量 (74)Ask最新卖价 (74)Bars柱数 (75)Bid最新买价 (75)Close[]收盘价 (76)Digits汇率小数位 (76)High[]最高价 (77)Low[]最低价 (78)Open[]开盘价 (79)Point点值 (80)Time[]开盘时间 (80)Volume[]成交量 (82)Program Run程序运行 (83)Program Run程序运行 (83)Imported functions call输入函数调用 (84)Runtime errors运行错误 (85)Account information账户信息 (100)AccountBalance( )账户余额 (100)AccountCredit( )账户信用点数 (100)AccountCompany( )账户公司名 (100)AccountCurrency( )基本货币 (100)AccountEquity( )账户资产净值 (101)AccountFreeMargin( )账户免费保证金 (101)AccountFreeMarginCheck()账户当前价格自由保证金 (101)AccountFreeMarginMode( )账户免费保证金模式 (102)AccountLeverage( )账户杠杆 (102)AccountMargin( )账户保证金 (102)AccountNumber( )账户数字 (103)AccountProfit( )账户利润 (103)AccountServer( )账户连接服务器 (103)AccountStopoutLevel( )账户停止水平值 (103)AccountStopoutMode( )账户停止返回模式 (104)Array functions数组函数 (105)ArrayBsearch()数组搜索 (105)ArrayCopy()数组复制 (106)ArrayCopyRates()数组复制走势 (107)ArrayCopySeries()数组复制系列走势 (108)ArrayDimension()返回数组维数 (109)ArrayGetAsSeries()返回数组序列 (110)ArrayInitialize()数组初始化 (110)ArrayIsSeries()判断数组连续 (111)ArrayMaximum()数组最大值定位 (111)ArrayMinimum()数组最小值定位 (112)ArrayRange()返回数组指定维数数量 (112)ArrayResize()改变数组维数 (113)ArraySetAsSeries()设定系列数组 (113)ArraySize()返回数组项目数 (114)ArraySort()数组排序 (114)Checkup检查 (116)GetLastError( )返回最后错误 (116)IsConnected( )返回联机状态 (116)IsDllsAllowed( )返回dll允许调用 (117)IsExpertEnabled( )返回智能交易开启状态 (118)IsLibrariesAllowed( )返回数据库函数调用 (118)IsOptimization( )返回策略测试中优化模式 (119)IsStopped( )返回终止业务 (119)IsTesting( )返回测试模式状态 (119)IsTradeAllowed( )返回允许智能交易 (120)IsTradeContextBusy( )返回其他智能交易忙 (120)IsVisualMode( )返回智能交易“图片模式” (120)UninitializeReason( )返回智能交易初始化原因 (120)Client terminal客户端信息 (122)TerminalCompany( )返回客户端所属公司 (122)TerminalName( )返回客户端名称 (122)TerminalPath( )返回客户端文件路径 (122)Common functions常规命令函数 (123)Alert弹出警告窗口 (123)Comment显示信息在走势图左上角 (123)GetTickCount获取时间标记 (124)MarketInfo在市场观察窗口返回不同数据保证金列表 (124)MessageBox创建信息窗口 (125)PlaySound播放声音 (125)Print窗口中显示文本 (126)SendFTP设置FTP (127)SendMail设置Email (127)Sleep指定的时间间隔内暂停交易业务 (128)Conversion functions格式转换函数 (129)CharToStr字符转换成字符串 (129)DoubleToStr双精度浮点转换成字符串 (129)NormalizeDouble给出环绕浮点值的精确度 (130)StrToDouble字符串型转换成双精度浮点型 (130)StrToInteger字符串型转换成整型 (130)StrToTime字符串型转换成时间型 (131)TimeToStr时间类型转换为"yyyy.mm.dd hh:mi"格式 (131)Custom indicators自定义指标 (132)IndicatorBuffers (132)IndicatorCounted (133)IndicatorDigits (134)IndicatorShortName (135)SetIndexArrow (136)SetIndexBuffer (137)SetIndexDrawBegin (138)SetIndexEmptyValue (139)SetIndexLabel (140)SetIndexShift (142)SetIndexStyle (144)SetLevelStyle (144)SetLevelValue (145)Date & Time functions日期时间函数 (146)Day (146)DayOfWeek (146)DayOfYear (146)Hour (147)Minute (147)Month (147)Seconds (148)TimeCurrent (148)TimeDay (148)TimeDayOfWeek (149)TimeDayOfYear (149)TimeHour (149)TimeLocal (150)TimeMinute (150)TimeMonth (150)TimeSeconds (150)TimeYear (151)Year (151)File functions文件函数 (152)FileClose关闭文件 (152)FileDelete删除文件 (152)FileFlush将缓存中的数据刷新到磁盘上去 (153)FileIsEnding文件结尾 (154)FileIsLineEnding (155)FileOpen打开文件 (155)FileOpenHistory历史目录中打开文件 (156)FileReadArray将二进制文件读取到数组中 (157)FileReadDouble从文件中读取浮点型数据 (158)FileReadInteger从当前二进制文件读取整形型数据 (158)FileReadNumber (159)FileReadString从当前文件位置读取字串符 (160)FileSeek文件指针移动 (161)FileSize文件大小 (162)FileTell文件指针的当前位置 (162)FileWrite写入文件 (163)FileWriteArray一个二进制文件写入数组 (164)FileWriteDouble一个二进制文件以浮动小数点写入双重值 (165)FileWriteInteger一个二进制文件写入整数值 (166)FileWriteString当前文件位置函数写入一个二进制文件字串符 (167)Global variables全局变量 (168)GlobalVariableCheck (168)GlobalVariableDel (168)GlobalVariableGet (169)GlobalVariableName (169)GlobalVariableSet (170)GlobalVariableSetOnCondition (170)GlobalVariablesDeleteAll (172)GlobalVariablesTotal (172)Math & Trig数学和三角函数 (173)MathAbs (173)MathArccos (173)MathArctan (174)MathCeil (175)MathCos (175)MathExp (176)MathFloor (176)MathLog (177)MathMax (177)MathMin (178)MathMod (178)MathPow (179)MathRand (179)MathRound (180)MathSin (180)MathSqrt (181)MathSrand (181)MathTan (182)Object functions目标函数 (183)ObjectCreate建立目标 (183)ObjectDelete删除目标 (184)ObjectDescription目标描述 (184)ObjectFind查找目标 (185)ObjectGet目标属性 (186)ObjectGetFiboDescription斐波纳契描述 (186)ObjectGetShiftByValue (187)ObjectMove移动目标 (188)ObjectName目标名 (188)ObjectsDeleteAll删除所有目标 (189)ObjectSet改变目标属性 (190)ObjectSetFiboDescription改变目标斐波纳契指标 (190)ObjectSetText改变目标说明 (191)ObjectsTotal返回目标总量 (191)ObjectType返回目标类型 (192)String functions字符串函数 (193)StringConcatenate字符串连接 (193)StringFind字符串搜索 (193)StringGetChar字符串指定位置代码 (194)StringLen字符串长度 (194)StringSetChar (195)StringSubstr提取子字符串 (195)StringTrimLeft (196)StringTrimRight (196)Technical indicators技术指标 (197)iAC比尔.威廉斯的加速器或减速箱振荡器 (197)iAD离散指标 (197)iAlligator比尔・威廉斯的鳄鱼指标 (198)iADX移动定向索引 (199)iATR平均真实范围 (199)iAO比尔.威廉斯的振荡器 (200)iBands保力加通道技术指标 (200)iBandsOnArray保力加通道指标 (201)iBullsPower牛市指标 (202)iCCI商品通道索引指标 (202)iCCIOnArray商品通道索引指标 (203)iCustom指定的客户指标 (203)iDeMarker (204)iEnvelopes包络指标 (204)iEnvelopesOnArray包络指标 (205)iForce强力索引指标 (206)iFractals分形索引指标 (206)iGator随机震荡指标 (207)iIchimoku (207)iBWMFI比尔.威廉斯市场斐波纳契指标 (208)iMomentum动量索引指标 (208)iMomentumOnArray (209)iMFI资金流量索引指标 (209)iMA移动平均指标 (210)iMAOnArray (210)iOsMA移动振动平均震荡器指标 (211)iMACD移动平均数汇总/分离指标 (212)iOBV能量潮指标 (212)iSAR抛物线状止损和反转指标 (213)iRSI相对强弱索引指标 (213)iRVI相对活力索引指标 (214)iStdDev标准偏差指标 (215)iStdDevOnArray (215)iStochastic随机震荡指标 (216)iWPR威廉指标 (217)Timeseries access时间序列图表数据 (218)iBars柱的数量 (218)iBarShift开始时间的柱 (218)iClose (219)iHigh (219)iHighest (220)iLow (221)iLowest (221)iOpen (222)iTime (222)iVolume (223)Trading functions交易函数 (225)Execution errors (225)OrderClose (228)OrderCloseBy (229)OrderClosePrice (229)OrderCloseTime (230)OrderComment (230)OrderCommission (231)OrderExpiration (232)OrderLots (232)OrderMagicNumber (232)OrderModify (233)OrderOpenPrice (234)OrderOpenTime (234)OrderPrint (235)OrderProfit (235)OrderSelect (236)OrderSend (237)OrdersHistoryTotal (238)OrderStopLoss (239)OrdersTotal (239)OrderSwap (240)OrderSymbol (240)OrderTakeProfit (241)OrderTicket (241)OrderType (241)Window functions窗口函数 (243)HideTestIndicators隐藏指标 (243)Period使用周期 (243)RefreshRates刷新预定义变量和系列数组的数据 (243)Symbol当前货币对 (245)WindowBarsPerChart可见柱总数 (245)WindowExpertName智能交易系统名称 (246)WindowFind返回名称 (246)WindowFirstVisibleBar第一个可见柱 (246)WindowHandle (247)WindowIsVisible图表在子窗口中可见 (247)WindowOnDropped (248)WindowPriceMax (248)WindowPriceMin (249)WindowPriceOnDropped (250)WindowRedraw (250)WindowScreenShot (251)WindowTimeOnDropped (252)WindowsTotal指标窗口数 (253)WindowXOnDropped (253)WindowYOnDropped (253)Obsolete functions过时的函数 (254)MetaQuotes Language 4 (MQL4) 是一种新的内置型程序用来编写交易策略。

第03课 MQL4程序设计基础语句语法规则详解(脚本)

第03课 MQL4程序设计基础语句语法规则详解(脚本)

第03课MQL4程序设计基础语句语法规则详解(脚本)一、MQL4程序的相关概念MQL4程序:为了得到按照既定的交易策略/方案来自动化交易,可以由MT4外汇软件执行的代码序列。

MQL4程序设计:是给出解决特定交易问题程序的过程,是软件构造活动中的重要组成部分,以MQL4程序设计语言为工具,写出具体代码的一套完整过程。

程序设计过程应当包括分析、设计流程/步骤、编码、测试、排错等不同阶段。

MQL4程序的运行:MT4需要加载代码,双击即可在某图表上运行程序。

需要注意的是,在做历史测试的时候,需要加载高质量的Tick级别历史数据,否则测试质量很低,不具有参考性。

MQL4编程:是编写程序的中文简称,就是让计算机代为解决某个交易问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。

为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。

这种人和计算体系之间交流的过程就是编程。

算法:是指对某些交易问题的严格的解释方法,一般的,一个算法拥有以下特点:1)有穷性:算法必须保证在执行有限步骤后结束。

2)可行性:算法是确切可行的,即使在数学中,该算法可行,但若在实际应用中,程序不可以被执行,那么,该算法也是不具有可行性的。

3)确切性:算法的每一个步骤必须具有明确的意义。

4)输入:一个算法必须要有0个或多个输入。

5)输出:一个算法必须要有1个或多个输出。

流程图:使用图形表示算法的思路是一种极好的方法,因为千言万语不如一张图。

流程图在汇编语言和早期的BASIC语言环境中得到应用。

相关的还有一种PAD图,对PASCAL或C 语言都极适用。

而且算法也可以在流程图中得以体现。

MQL4开发:计算机程序开发是周而复始的,需要经历:编写新代码、测试、分析等,从事这种事业的工作人员叫做程序员。

面向初学者的MQL4语言。自定义指标(第2部分)

面向初学者的MQL4语言。自定义指标(第2部分)

面向初学者的MQL4语言。

自定义指标(第2部分)简介这是“面向初学者的MQL4 语言”系列的第五篇文章。

今天我们将学习使用图形对象,这是个非常强大的开发工具,可以大幅拓宽指标的应用范围。

此外,它们可以用于脚本和Expert Advisor。

我们将学习创建对象,更改其参数以及检查错误。

当然,我不可能详细地描述所有对象,那也太多了。

但你会获得让你能够自主学习这些对象的所有必要知识。

本文还包含一个逐步引导你创建复杂信号指标的示例。

于此基础上,你可以创建任意信号指标,为多个指标显示所有周期上的交易信号。

在这里示例中,很多参数都是可调整的,这样就能轻松更改指标的外观。

关于图形对象使用 MetaTrader 4 终端时,你经常会和它们打交道。

图形对象有很多用途。

交易者可以设置支撑位和阻力位、枢轴点、斐波纳契位等。

我们来看一个简单的对象用例:四个图形对象连接到此图表:•两条水平线•一个文本对象•一个对象符号(箭头)今天我们要学习使用MQL4 连接此类对象。

想象一下,有多少手动操作可以通过使用对象实现自动化!举个例子,你曾手动计算过枢轴点、支撑位和阻力位,然后再手动绘制它们吗?好吧,这个工作量并不算多,但如果在MQL4 中自动化这个流程,终端会自动计算并绘制对应的价位。

你要做的就是双击脚本名称,然后坐等结果。

此外,你可以使用图形对象编写非常有用的信号指标。

处理对象的概念在 MQL4 中处理所有图形对象的算法如下:•创建对象•修改其参数(移动、更改颜色、板框等)•删除对象这就是一个特定的“生命周期”。

现在我们来详细说明各个阶段。

创建图形对象要绘制任何图形对象,都会用到通用函数ObjectCreate()。

以下是其原型:bool ObjectCreate(string name, int type, int window, datetime time1, double price1, datetime time2=0,double price2=0, datetime time3=0, double price3=0)如果一切正常,此函数返回true,如果无法创建对象或出现错误,则返回false要找出错误代码,使用函数GetLastError():if(ObjectCreate(/* arguments */)==false){// an error occurred, its code should be recorded into a journalPrint('Error of calling ObjectCreate():',GetLastError());}我们要错误代码做什么?它会帮助你找到错误说明,或可消除错误。

MQL4命令手册(可编辑)

MQL4命令手册(可编辑)

MQL4命令手册MQL4 ReferenceMQL4命令手册(本手册采用 Office2007编写)2010年 2月MetaQuotes Language 4 MQL4 是一种新的内置型程序用来编写交易策略。

这种语言可以创建你自己的智能交易,使自己的交易策略能够完全自动地执行。

而且,MQL4 还能自定义客户指标,脚本和数据库。

内包含了大量可以分析当前及历史报价所必须的函数,以及一些基本的运算和逻辑操作。

并内置了一些基本的指标和操作命令。

MetaEditor 4集合了编写 MQL4 程序代码的各种语句,它能帮助使用者方便地写出规范的代码。

MetaQuotes Language Dictionary 是 MQL4 语言的帮助工具,它包含了我们在使用工程中所有可能用到的函数。

MetaQuotes Language 4 :可以编写不同作用的程序代码■智能交易是一种连接到特定图表的自动交易系统。

它能够根据设置的节点自动启动 ,当它开始运行后,它不会同时去处理另一个新的指令也就是说必须等到当前程序完成。

这种交易系统能够在提醒用户可以交易的同时,将交易定单自动送到交易服务器。

与大多数交易系统一样, 它也能够用历史数据测试交易策略,并在图表上显示出来。

terminal_directory\experts智能交易存储在。

■自定义指标可用来编写新的技术指标,和内置的指标一样,它不能用来进行自动交易,只能作为分析数据的工具。

自定义指标储存在 terminal_directory\experts\indicators。

■脚本是执行单一功能的一段程序,和智能交易不同,脚本不能单独执行,只能被调用。

terminal_dictionary\experts\scripts脚本存储在。

■数据库常被使用的自定义函数的集合。

数据库不能单独运行。

数据库建议存储在 terminal_directory\experts\libraries。

MQL4命令中文详解手册

MQL4命令中文详解手册

MQL4命令中⽂详解⼿册MQL4 Reference MQL4命令⼿册(本⼿册采⽤Office2007编写)2010年2⽉⽬录MQL4 Reference (1)MQL4命令⼿册 (1)Basics基础 (18)Syntax语法 (18)Comments注释 (18)Identifiers标识符 (19)Reserved words保留字 (19)Data types数据类型 (20)Type casting类型转换 (20)Integer constants整数常量 (21)Literal constants字⾯常量 (21)Boolean constants布尔常量 (22)Floating-point number constants (double)浮点数常量(双精度) (22) String constants字符串常量 (23)Color constants颜⾊常数 (23)Datetime constants⽇期时间常数 (24)Operations & Expressions操作表达式 (25)Expressions表达式 (25)Arithmetical operations算术运算 (25)Assignment operation赋值操作 (26)Operations of relation操作关系 (27)Boolean operations布尔运算 (27)Bitwise operations位运算 (28)Other operations其他运算 (28)Precedence rules优先规则 (29)Operators操作符 (31)Compound operator复合操作符 (31)Expression operator表达式操作符 (32)Break operator终⽌操作符 (32)Continue operator继续操作符 (32)Return operator返回操作符 (33)Conditional operator if-else条件操作符 (34) Switch operator跳转操作符 (35)Cycle operator while循环操作符while (36) Cycle operator for循环操作符for (37) Functions函数 (38)Function call函数调⽤ (39)Special functions特殊函数 (40)Variables变量 (40)Local variables局部变量 (42)Formal parameters形式变量 (42)Static variables静态变量 (44)Global variables全局变量 (44)Defining extern variables外部定义变量 (45) Initialization of variables初始化变量 (45) External functions definition外部函数的定义 (46) Preprocessor预处理 (47)Constant declaration常量声明 (47) Controlling compilation编译控制 (48) Including of files包含⽂件 (49)Importing of functions导⼊功能 (49)Standard constants标准常数 (52)Series arrays系列数组 (52)Timeframes图表周期时间 (52)Trade operations交易操作 (53)Price constants价格常数 (53)MarketInfo市场信息识别符 (54)Drawing styles画线风格 (56)Arrow codes预定义箭头 (57)Wingdings宋体 (58)Web colors颜⾊常数 (59)Indicator lines指标线 (60)Ichimoku Kinko Hyo (61)Moving Average methods移动平均⽅法 (61) MessageBox信息箱 (62)Object types对象类型 (64)Object properties对象属性 (65)Object visibility (67)Uninitialize reason codes撤销初始化原因代码 (68) Special constants特别常数 (68)Error codes错误代码 (69)Predefined variables预定义变量 (74)Ask最新卖价 (74)Bars柱数 (75)Bid最新买价 (75)Close[]收盘价 (76)Digits汇率⼩数位 (76)High[]最⾼价 (77)Low[]最低价 (78)Open[]开盘价 (79)Point点值 (80)Time[]开盘时间 (80)Volume[]成交量 (81)Program Run程序运⾏ (83)Program Run程序运⾏ (83)Imported functions call输⼊函数调⽤ (84)Runtime errors运⾏错误 (85)Account information账户信息 (99)AccountBalance( )账户余额 (99)AccountCredit( )账户信⽤点数 (99) AccountCompany( )账户公司名 (99) AccountCurrency( )基本货币 (99)AccountEquity( )账户资产净值 (100) AccountFreeMargin( )账户免费保证⾦ (100) AccountFreeMarginCheck()账户当前价格⾃由保证⾦ (100) AccountFreeMarginMode( )账户免费保证⾦模式 (100) AccountLeverage( )账户杠杆 (101)AccountMargin( )账户保证⾦ (101)AccountNumber( )账户数字 (102)AccountProfit( )账户利润 (102)AccountServer( )账户连接服务器 (102) AccountStopoutLevel( )账户停⽌⽔平值 (102) AccountStopoutMode( )账户停⽌返回模式 (102) Array functions数组函数 (104)ArrayBsearch()数组搜索 (104)ArrayCopy()数组复制 (105)ArrayCopyRates()数组复制⾛势 (106) ArrayCopySeries()数组复制系列⾛势 (107) ArrayDimension()返回数组维数 (108) ArrayGetAsSeries()返回数组序列 (109) ArrayInitialize()数组初始化 (109)ArrayIsSeries()判断数组连续 (110) ArrayMaximum()数组最⼤值定位 (110) ArrayMinimum()数组最⼩值定位 (111) ArrayRange()返回数组指定维数数量 (111) ArrayResize()改变数组维数 (112) ArraySetAsSeries()设定系列数组 (112) ArraySize()返回数组项⽬数 (113)ArraySort()数组排序 (113)Checkup检查 (115)GetLastError( )返回最后错误 (115)IsConnected( )返回联机状态 (115) IsDllsAllowed( )返回dll允许调⽤ (116) IsExpertEnabled( )返回智能交易开启状态 (117) IsLibrariesAllowed( )返回数据库函数调⽤ (117) IsOptimization( )返回策略测试中优化模式 (118) IsStopped( )返回终⽌业务 (118)IsTesting( )返回测试模式状态 (118) IsTradeAllowed( )返回允许智能交易 (119) IsTradeContextBusy( )返回其他智能交易忙 (119) IsVisualMode( )返回智能交易“图⽚模式” (119) UninitializeReason( )返回智能交易初始化原因 (119) Client terminal客户端信息 (121) TerminalCompany( )返回客户端所属公司 (121) TerminalName( )返回客户端名称 (121)TerminalPath( )返回客户端⽂件路径 (121)Common functions常规命令函数 (122)Alert弹出警告窗⼝ (122)Comment显⽰信息在⾛势图左上⾓ (122) GetTickCount获取时间标记 (123)MarketInfo在市场观察窗⼝返回不同数据保证⾦列表 (123) MessageBox创建信息窗⼝ (124)PlaySound播放声⾳ (124)Print窗⼝中显⽰⽂本 (125)SendFTP设置FTP (126)SendMail设置Email (126)Sleep指定的时间间隔内暂停交易业务 (127) Conversion functions格式转换函数 (128)CharToStr字符转换成字符串 (128)DoubleToStr双精度浮点转换成字符串 (128) NormalizeDouble给出环绕浮点值的精确度 (129) StrToDouble字符串型转换成双精度浮点型 (129) StrToInteger字符串型转换成整型 (129)StrToTime字符串型转换成时间型 (130)TimeToStr时间类型转换为"yyyy.mm.dd hh:mi"格式 (130) Custom indicators⾃定义指标 (131) IndicatorBuffers (131)IndicatorCounted (132)IndicatorDigits (133)IndicatorShortName (134)SetIndexArrow (135)SetIndexBuffer (136)SetIndexDrawBegin (137)SetIndexEmptyValue (138)SetIndexLabel (139)SetIndexShift (141)SetIndexStyle (143)SetLevelStyle (143)SetLevelValue (144)Date & Time functions⽇期时间函数 (145)Day (145)DayOfWeek (145)DayOfYear (145)Hour (146)Minute (146)Month (146)Seconds (147)TimeCurrent (147)TimeDay (147)TimeDayOfWeek (148) TimeDayOfYear (148)TimeHour (148)TimeLocal (149)TimeMinute (149)TimeMonth (149)TimeSeconds (149)TimeYear (150)Year (150)⽂件函数 (151)关闭⽂件 (151)删除⽂件 (151)将缓存中的数据刷新到磁盘上去 (152)⽂件结尾 (153)(154)打开⽂件 (154)历史⽬录中打开⽂件 (155)将⼆进制⽂件读取到数组中 (156)从⽂件中读取浮点型数据 (157)从当前⼆进制⽂件读取整形型数据 (157) (158)从当前⽂件位置读取字串符 (159)⽂件指针移动 (159)⽂件⼤⼩ (160)⽂件指针的当前位置 (161)写⼊⽂件 (161)⼀个⼆进制⽂件写⼊数组 (162)⼀个⼆进制⽂件以浮动⼩数点写⼊双重值 (163)⼀个⼆进制⽂件写⼊整数值 (164)当前⽂件位置函数写⼊⼀个⼆进制⽂件字串符 (165) Global variables全局变量 (167) GlobalVariableCheck (167) GlobalVariableDel (167)GlobalVariableGet (168) GlobalVariableName (168) GlobalVariableSet (169) GlobalVariableSetOnCondition (169) GlobalVariablesDeleteAll (171) GlobalVariablesTotal (171)Math & Trig数学和三⾓函数 (172)MathAbs (172)MathArccos (172)MathArctan (173)MathCeil (174)MathCos (174)MathExp (175)MathFloor (175)MathLog (176)MathMax (176)MathMin (177)MathMod (177)MathPow (178)MathRand (178)MathRound (178)MathSin (179)MathSqrt (180)MathSrand (180)MathTan (181)Object functions⽬标函数 (182)ObjectCreate建⽴⽬标 (182)ObjectDelete删除⽬标 (183)ObjectDescription⽬标描述 (183)ObjectFind查找⽬标 (184)ObjectGet⽬标属性 (185) ObjectGetFiboDescription斐波纳契描述 (185) ObjectGetShiftByValue (186)ObjectMove移动⽬标 (187)ObjectName⽬标名 (187)ObjectsDeleteAll删除所有⽬标 (188)ObjectSet改变⽬标属性 (188) ObjectSetFiboDescription改变⽬标斐波纳契指标 (189) ObjectSetText改变⽬标说明 (190)ObjectsTotal返回⽬标总量 (190)ObjectType返回⽬标类型 (191)String functions字符串函数 (192) StringConcatenate字符串连接 (192)StringFind字符串搜索 (192)StringGetChar字符串指定位置代码 (193)StringLen字符串长度 (193)StringSetChar (194)StringSubstr提取⼦字符串 (194)StringTrimLeft (195)StringTrimRight (195)Technical indicators技术指标 (196)iAC⽐尔.威廉斯的加速器或减速箱振荡器 (196)iAD离散指标 (196)iAlligator⽐尔?威廉斯的鳄鱼指标 (197)iADX移动定向索引 (198)iATR平均真实范围 (198)iAO⽐尔.威廉斯的振荡器 (199)iBands保⼒加通道技术指标 (199) iBandsOnArray保⼒加通道指标 (200)iBullsPower⽜市指标 (201)iCCI商品通道索引指标 (201)iCCIOnArray商品通道索引指标 (202)iCustom指定的客户指标 (202)iDeMarker (203)iEnvelopes包络指标 (203) iEnvelopesOnArray包络指标 (204)iForce强⼒索引指标 (204)iFractals分形索引指标 (205)iGator随机震荡指标 (205)iIchimoku (206)iBWMFI⽐尔.威廉斯市场斐波纳契指标 (207) iMomentum动量索引指标 (207) iMomentumOnArray (208)iMFI资⾦流量索引指标 (208)iMA移动平均指标 (209)iMAOnArray (209)iOsMA移动振动平均震荡器指标 (210) iMACD移动平均数汇总/分离指标 (211) iOBV能量潮指标 (211)iSAR抛物线状⽌损和反转指标 (212)iRSI相对强弱索引指标 (212)iRVI相对活⼒索引指标 (213)iStdDev标准偏差指标 (214) iStdDevOnArray (214)iStochastic随机震荡指标 (215)iWPR威廉指标 (216)Timeseries access时间序列图表数据 (217) iBars柱的数量 (217)iBarShift开始时间的柱 (217)iClose (218)iHigh (218)iHighest (219)iLow (220)iLowest (220)iOpen (221)iTime (221)iVolume (222)Trading functions交易函数 (224)Execution errors (224)OrderClose (227)OrderCloseBy (228)OrderClosePrice (228)OrderCloseTime (229)OrderComment (229)OrderCommission (230)OrderExpiration (231)OrderLots (231)OrderMagicNumber (231)OrderModify (232)OrderOpenPrice (233)OrderOpenTime (233)OrderPrint (234)OrderProfit (234)OrderSelect (235)OrderSend (236)OrdersHistoryTotal (237)OrderStopLoss (238)OrdersTotal (238)OrderSwap (239)OrderSymbol (239)OrderTakeProfit (240)OrderTicket (240)OrderType (240)Window functions窗⼝函数 (242) HideTestIndicators隐藏指标 (242)Period使⽤周期 (242)RefreshRates刷新预定义变量和系列数组的数据 (242) Symbol当前货币对 (244) WindowBarsPerChart可见柱总数 (244) WindowExpertName智能交易系统名称 (245) WindowFind返回名称 (245) WindowFirstVisibleBar第⼀个可见柱 (245) WindowHandle (246)WindowIsVisible图表在⼦窗⼝中可见 (246)WindowOnDropped (247)WindowPriceMax (247)WindowPriceMin (248)WindowPriceOnDropped (249)WindowRedraw (249)WindowScreenShot (250)WindowTimeOnDropped (251)WindowsTotal指标窗⼝数 (251)WindowXOnDropped (252)WindowYOnDropped (252)Obsolete functions过时的函数 (253)MetaQuotes Language 4 (MQL4) 是⼀种新的内置型程序⽤来编写交易策略。

《用MQL4编程》读书笔记(4)

《用MQL4编程》读书笔记(4)

《用MQL4编程》读书笔记(4)MQL4的程序结构·程序结构MQL4 程序由以下几大部分组成:1.头部2.特别函数 init()3.特别函数 start()4.特别函数 deinit()5.外建函数(用户自定义函数)代码执行顺序在主窗(货币对K线窗)中开启程序,最先执行的是头部代码。

接着执行特别函数 init(),并且只执行这一次。

程序的主要操作,是运行特别函数 start()。

start() 完成操作任务后,把控制交还MT4。

在新的报价(tick)到来时,MT4再次把控制交给 start(),由其运行。

启动后的程序,可以这样循环运行几个星期至几个月。

如果汇客把在主窗中的程序移除,MT4会一次性执行特别函数deinit()。

这对于正确终止操盘手的操作,是必要的。

·特别函数 init(), start()和deinit()它们是由MT4内部调用的,程序中没有对其调用的语句。

函数 init()操盘手的init() 调用执行,是在MT4启动并装入历史数据之后;或者,更换货币对之后;或者,更换K线图时间周期之后;或者,程序重新编译之后;或者,改变操盘手设置参数之后;以及,变更用户帐号之后。

脚本的 init() 调用执行,是在脚本置入主窗口之际。

外建指标的init() 调用执行,是在MT4启动之后;或者,更换货币对之后;或者,更换K线图时间周期之后;或者,程序重新编译之后;或者,改变外建函数设置参数之后。

函数 start()操盘手的start() 调用执行,是在新报价(tick)到来之际。

如果在start()执行时,有新报价到来,则其被忽略,不予处理。

脚本的 start() 一次性调用执行,是在脚本由init()初始化之后。

外建指标的start() 调用执行,是在其被置入主窗之后,新报价到来之际;或者,改变了主窗大小;或者,更换币种、更换K线图时间周期之后。

函数 deinit()可译为“善后函数”,处理程序结束时的事务。

【MQL4】MQ语言简单说明与教程

【MQL4】MQ语言简单说明与教程

【MQL4】MQ语言简单说明与教程MQL II语言包括大量的用于控制现在和过去的报价、主要算法、逻辑运算的变量,并在建立主要指示器以及指示开立和控制头寸方面起关键作用。

这种语言是同TRADERSTION技术公司开发的EASY语言是相类似的,但它有一些特殊功能。

程序代码是由METAEDITOR文字编辑器编写的,它能将MQL II 不同部分设定为不同颜色,因而,可帮助用户以// 标记(双斜线)开始通过专家系统文本注释。

注释也可以用斜线星号星号斜线(/*(注释)*/,即如C语言一样)来标记。

编辑器是固定以灰色显示注释。

为了建立和控制投资交易战略,客户必须有一有关记录信号产生、变动的进行交易的结果的信息的日志文件。

人工智能系统的日志是在环球银行客户目录中的/logs/YYYYMMDD.log 文件下。

当前日志可直接访问下级终端窗口。

若要访问MQL II 语言的目录系统,就需要打开METAQOUTES语言窗口或者按下字典按钮或从工具菜单中查找,这使得用户能获取每一用该语言的信息的详细数据。

1.主要语言结构同其它语言一样,MQL II有一套主要的元素来构建他的主要结构。

这些元素应以特殊的方式组合与安排,用以表示特定的语句和公式。

语言的主要对象是数据,即三种类型的数据:数值型、逻辑型、字符型。

所有的数值型都用双重格式,逻辑型数据为真或假,字符串是用省略号标记的一串字符。

字符串又名为文本串。

数据可包括不同类型的变量,也可直接表示为源程序正本。

每一个METAQUOTES语句都是一完整结构,可以包含固定词、操作指令、数据、变量、表达式、标点符号,通常是以分号结束。

固定语句是指预先确定的具有特殊和具体意义的词汇。

操作指令是指定特定数据、变量、表达式操作的符号。

变量通常包含数值、字符、逻辑型数据。

表达式是指固定语句、变量、操作指令、数据的联合体,是语言中三种类型数据即数值型、字符型、逻辑型数据综合运用的结果。

标点符号是用来描述表达式、定义参量、划分句子以及数列再排序的。

MT4编程入门教程

MT4编程入门教程

MT4编程入门教程MT4是一种广泛使用的外汇交易平台,它提供了强大的交易功能和高度可定制性。

为了使交易者能够根据自己的需求和策略进行自动化交易,MT4还提供了MQL4编程语言。

本教程将介绍MT4编程的基础知识和入门指南。

第一部分:MQL4简介(200字)MQL4是MetaQuotes Language 4的缩写,是MT4交易平台上使用的编程语言。

它基于C语言,并且具有简单易学的特点。

使用MQL4,交易者可以编写自定义指标、脚本和外汇机器人,并将它们应用于MT4交易平台。

第二部分:MT4编程环境的设置(200字)第三部分:MQL4基本语法(400字)MQL4编程语言具有与C语言类似的语法结构。

以下是MQL4的基本语法要点:1.注释:使用“//”表示单行注释,使用“/**/”表示多行注释。

2. 变量:使用关键字“int”、“double”、“bool”和“string”定义整型、双精度浮点数、布尔和字符串变量。

3. 函数:使用关键字“void”或返回类型定义函数,例如“int”、“double”和“bool”。

函数可以包含参数和返回值。

4. 条件语句:使用关键字“if”、“else if”和“else”定义条件语句。

例如:if (条件)//执行一些代码} else if (条件)//执行一些其他代码} else//执行默认代码}```5. 循环:使用关键字“for”和“while”定义循环语句。

例如:```for (初始化; 条件; 更新)//执行循环代码}```6.数组:使用方括号“[]”定义一维和多维数组。

例如:```int myArray[5]; // 定义一个包含5个元素的整型数组double myArray2D[3][3]; // 定义一个包含3行3列的二维数组第四部分:自定义指标和脚本(200字)在MT4中,使用MQL4编程语言可以创建自定义指标和脚本。

自定义指标是根据特定算法计算的技术指标,用于辅助交易决策。

MQL4语言完整版教程

MQL4语言完整版教程

MQL4语言完整版教程外汇智能交易MQL4语言完整版教程什么是智能交易系统?它是一个用特殊的MetaQuotes 语言 4 (M QL 4)编写的自动交易系统(ATS),和特定的图表联系在一起。

智能交易系统不仅能通知交易商交易机会,而且还能自动执行交易账户上的交易,直接发送到交易服务器。

和许多的IT系统一样,智能交易系统系统支持历史数据战略测试,图表上表示的登入/登出点。

而且,智能交易系统的可执行码分别存储于源文件和加密的执行文件中-这种安排保证了交易商所使用的逻辑隐藏(如有必要的话),而不会泄密。

MetaTrader4 软件将智能交易系统在程序的根目录/Experts 子目录里保存为*.MQ4(source text) 和*.EX4 (可执行码)文件。

交易商可以无限量地保存智能交易系统数据,这些数据可以通过导航条窗口容易地加以管理。

创建自定义智能交易系统数据的程序以及将数据和交易终端连接在MetaTrader4 用户指南里有详细的描述。

MetaQuotes 4 语言是用来编写自定义智能交易系统软件,以便使交易程序管理自动化以及执行交易商自己的交易策略。

MetaQuote s 4 语言易学、易用、易创建。

MetaQuotes 4 语言包括相当数量的变量,用来控制当前和前期的报价、主要的算术和逻辑运算和特征,主要的内置指标和用来开启和控制头寸的命令。

在语法上,该语言和由T radeStation 技术有限公司开发的简易语言相似,但是它有其自身的一些具体特征。

程序代码是用MetaEditor4编辑器编写的,它能够用不同的色彩集中反映MQL 4语言的不同结构,因此,有助于用户熟悉专家系统的文本。

注解开始于//符号(双斜线)。

注解也可以用“斜线-星号”-“星号-斜线”组合(, 就像在 "C"编程语言一样)。

设定和控制操作战略,交易商保存一份日志文件,存储产生的信号信息、变量输出和已执行交易的结果。

原创MQL4编程初体验——构建简化交易指令集、实现实时步进提示

原创MQL4编程初体验——构建简化交易指令集、实现实时步进提示

2.脚本清单包括: (1)一键买、卖:!A1_买0.02.mq4;!A1_买0.05.mq4;!A1_ 卖0.02.mq4;!A1_卖0.05.mq4。 (2)止盈止损快速调整:!00_设置默认止赢.mq4;!02修改 止损-同一止损.mq4;!02修改止损系统.mq4;!02修改止赢-同一 止赢.mq4;!02修改止赢系统.mq4。 (3)一键平仓:!01_关闭所有挂单(当前品种).mq4;!01_ 关闭若干挂单(当前品种,倒序).mq4;!03_全部平仓(当前品 种).mq4;!03_平二分之一仓(当前品种).mq4;!03_部分平仓 (当前品种).mq4;!03一键平仓(所有品种).mq4。 (4)挂单平移:!01_挂单平移(当前品种).mq4。 (5)开仓统计:!01开仓统计(不发送).mq4;!01开仓统计 (所有品种).mq4。 (6)价格步进提示:步进警报指标.mq4。 (7)手动发送信息:!05手动发送信息.mq4。 代码的编写较为简单,此处不做罗列。
theoretical discussion 理论探讨
原创MQL4编程初体验
——构建简化交易指令集、实现实时步进提示
张天晨
MetaQuotesLanguage4(简称MQL4)是在目前最通用的外汇、 期货交易软件MetaTrader4(简称MT4)中内置的自动化交易语 言,该语言帮助你创建自己的智能交易,使交易策略能够完全自 动地执行,还能自定义客户指标,脚本和数据库。笔者是一名初 涉MT4外汇交易的在读大学生,通过学习和实践,已经感受到了 MQL4扩展工具的强大力量;此处整理了自己的一些原创应用。 笔者是在福汇MT4交易平台上开发自己的MQL4应用的,本次 的开发的目标是实现两个最基本的功能,一是构建简化交易指令 集,辅助人工快速操作;二是通过自定义指标和“通知”功能实 现价格实时监控。来自108三、实际应用

零基础学MQL4编程

零基础学MQL4编程

零基础学MQL4编程特别说明:本文中主要内容来源于英文版MQL4 Reference 摘译,本人在MQL4 Reference基础上进行了摘译、整理,加入了部分通俗的文字说明和简明易懂的图片示例等,目的是更易于初学者上手。

如有侵权,请及时联系本人删除。

第一部分初识MQL4一、MQL4概述MetaQuotes Language 4(MQL4)是用于编程交易策略和或自定义指标等的内置语言。

该语言由MetaQuotes Software Corp根据其在创建在线交易平台方面的长期经验开发。

使用这种语言,您可以创建自己的智能交易系统,使交易管理自动化。

这非常适合实施您自己的交易策略。

此外,使用MQL4,您可以创建自己的技术指标(自定义指标),脚本和库。

MetaQuotes Language 4(MQL4)是面向对象的高级编程语言,用于编写自动交易策略,用于分析各种金融市场的自定义技术指标。

它不仅可以编写各种设计用于实时操作的专家系统,还可以创建自己的图形工具来帮助您做出交易决策。

MQL4基于流行编程语言C ++的概念。

该语言具有枚举,结构,类和事件处理。

通过增加嵌入式主类型的数量,MQL4中的可执行程序与其他应用程序之间通过dll的交互现在变得越来越简单。

MQL4语法类似于C ++的语法,可直接对C/C++语言的程序进行编译。

MQL4包含了分析当前和以前收到的报价所需的大量函数,并且具有用于管理交易订单并对其进行控制的内置基本指标和函数。

MetaEditor(文本编辑器)突出显示不同的MQL4语言结构,用于编写程序代码。

它可以帮助用户很容易地在专家系统(也叫智能交易系统)文本中定位自己。

简要指南包含函数、操作、保留字和其他语言结构,并将其分为不同的类别。

MetaQuotes Language 4可以编写具有不同功能和用途的程序:(一)、智能交易系统(EA) 这是连接到某个图表的机械交易系统。

当启动交易系统后,EA开始运行,处理以下事件:初始化事件和取消初始化事件,新的订单接收发送事件,计时器事件,市场变化事件深度,图表事件和自定义事件。

MQL4编程参考中文版

MQL4编程参考中文版

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系统和编程指南

MQL4系统和编程指南

一:MQL语言的主要程序类型1.共三种分别是:指标,EA(Expert, Advisors,智能交易系统),脚本(自动交易程序,只能执行一次),它们之间的区别。

2.怎么运行3.加载的问题4.作用运行原理5.其它: 效率测试实用性改进性回撤怎么运行EA:把.ex4的files放入MT4\experts\...把dll 文件放入MT4\experts\libraries\...点击导航器选中程序拖入货币对window.,在程序右上角出现X符号,说明EA没启动.点智能交易出现笑脸符号.说明EA可正常运行.怎么运行指标: 把.ex4的files放入MT4\experts\indicators…点击导航器\自定义指标选中程序拖入货币对怎么运行脚本: 把.ex4的files放入MT4\experts\scripts脚本无参数.作用:指标Indicator 主图,附图脚本Script 下单平仓一次性工作EA Expert 条件进去场资金管理仓位管理运行原理:指标:加载后从历史最左边的K线开始计算,计算完成,在当前动态K线,每一个Tick(报价)到来的时候,计算一次那些情况下会重新计算一次:1.第一次加载到图表2.改动参数3.重新编译4.重新打开加载有指标的K线图表5.切换K线周期指标计算要考虑效率,通过优化减少计算量EA:由五部分组成:1.变量定义2.EA init()3.EA deinit()4.EA 执行proaram , int start()5.自定变量指标:与EA不同之处:变量定义增加了所在的窗口,主副定义指标显示物件的模型执行时只计算输出变量,不能进行平仓,修改等。

二:MQL4编程核心:价格数据,调用指标数据,调用下单,操作定单function1.price function:货币对,buy,sell,time.open,close,high,low2.调用MT4的指标,和自定义.3.下单,操作定单functionEA框架由五部分组成:1.变量预定义:定义程序中使用的公共变量2.EA初始化程序:EA调入到图表后执行一次,之后不再执行,用来…定义…模型3.EA结束程序:EA退出图表时执行一次,用来删除图表中的….4.EA执行程序:每过来一个报价就执行一次5.自定义变量:用来编定一些自定义函数指标框架由五部分组成:1.在变量预定义里增加了指标所在窗口的语句,限定指标在主图或附图里显示2定义指标显示….的模型,如线型,颜色,输出变量名称等,3同上4增加:计算输出变量,不能进行开仓,平仓,修改止赢,止损等操作5同上.坐标系:定位:时间,价格,开仓量.横坐标:可以是时间,可以是K线序号,通常使用K线序号;开仓量通常在风险控制中考虑因此:编程的重点在时间和价格二维内置变量与函数整数相除的方法:double i=(1*0.01)/(3*0.01)市场函数:定义最低价变量myLow,并获取最低价。

基于MQL4的交易策略自动化设计与优化

基于MQL4的交易策略自动化设计与优化

基于MQL4的交易策略自动化设计与优化一、引言在金融市场中,交易策略的设计和优化是投资者获取稳定收益的关键。

随着计算机技术的不断发展,自动化交易系统逐渐成为投资者的首选工具。

MQL4作为MetaTrader 4平台上的编程语言,为交易策略的自动化提供了便利。

本文将探讨基于MQL4的交易策略自动化设计与优化。

二、MQL4简介MQL4是MetaQuotes Language 4的缩写,是专门为MetaTrader 4平台设计的一种编程语言。

通过MQL4,交易者可以编写自己的交易指令、脚本和指标,实现自动化交易。

MQL4语法类似于C语言,易学易用,适合金融领域从业者进行交易策略的编写。

三、交易策略设计1. 策略逻辑在设计交易策略时,首先需要明确策略的逻辑。

包括但不限于买入信号、卖出信号的条件、止损止盈设置等。

通过MQL4编程,将这些逻辑转化为代码实现。

2. 编写代码利用MQL4语言编写交易策略代码。

可以通过MetaEditor工具进行编程,实现对市场行情数据的获取、分析和交易指令下达等功能。

合理利用MQL4提供的函数库,可以简化代码编写过程。

四、交易策略优化1. 参数优化在设计完交易策略后,需要对其进行参数优化。

通过历史数据回测,找到最优的参数组合,提高策略的盈利能力和稳定性。

2. 风险控制在优化交易策略时,要注意风险控制。

设置合理的止损线和止盈线,控制每笔交易的风险水平,避免大额亏损。

五、实例分析以某一具体交易策略为例,通过MQL4编程实现其自动化交易,并进行参数优化和风险控制。

展示如何利用MQL4语言设计高效稳健的交易策略。

六、总结基于MQL4的交易策略自动化设计与优化是金融领域中一个重要且热门的话题。

通过本文对MQL4语言及其在交易策略中的应用进行介绍,希望读者能够更深入地了解自动化交易系统,并在实践中不断优化和改进交易策略,获取更好的投资回报。

MQL4经典入门第3课

MQL4经典入门第3课
C、 增量表达式: 增量表达式把循环变量的值(本例中为 i)增加 1。 它是循环步骤中的最后一步,在初始化循环变量,测试完测试表达式,执行完循环主体之 后。 下面是 for 循环的流程图:
像初始表达式一样,在 fro 循环中你也可以使用多个增量表达式,它们之间用逗号分隔。 像下面这样: int i; int j;
for(i=0,j=0;i<15;i++,j++) print(i); 注意:你只能使用一个测试表达式。 另一个需要注意的地方是增量表达式不仅能增加循环变量,还可以减少循环变量。例如: int i; for(i=15;i>0;i--) print(i); 上面的例子中,它初始化 i 的值为 15 然后开始循环,并每次将其减少 1 和检查测试表达式 (i>0)。 程序将给出这些结果:15,14,13,12,11,10,9,8,7,6,5,4,3,2,1。
循环主体中的多个语句:
在前面的例子里,循环主体中都只有一个语句,但并不总是这样。 你可以像下面这样使用大括号({})在循环主体中使用多个语句: For(int i=0;i<=15;i++) { Print(i); PlaySound(“alert.wav”); } 不要忘记在每一个语句后面加上分号。
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力通根保1据过护生管高产线中工敷资艺设料高技试中术卷资0配不料置仅试技可卷术以要是解求指决,机吊对组顶电在层气进配设行置备继不进电规行保范空护高载高中与中资带资料负料试荷试卷下卷问高总题中体2资2配,料置而试时且卷,可调需保控要障试在各验最类;大管对限路设度习备内题进来到行确位调保。整机在使组管其高路在中敷正资设常料过工试程况卷中下安,与全要过,加度并强工且看作尽护下可1都关能可于地以管缩正路小常高故工中障作资高;料中对试资于卷料继连试电接卷保管破护口坏进处范行理围整高,核中或对资者定料对值试某,卷些审弯异核扁常与度高校固中对定资图盒料纸位试,置卷编.工保写况护复进层杂行防设自腐备动跨与处接装理地置,线高尤弯中其曲资要半料避径试免标卷错高调误等试高,方中要案资求,料技编试术写5、卷交重电保底要气护。设设装管备备置线4高、调动敷中电试作设资气高,技料课中并术3试、件资且中卷管中料拒包试路调试绝含验敷试卷动线方设技作槽案技术,、以术来管及避架系免等统不多启必项动要方方高式案中,;资为对料解整试决套卷高启突中动然语过停文程机电中。气高因课中此件资,中料电管试力壁卷高薄电中、气资接设料口备试不进卷严行保等调护问试装题工置,作调合并试理且技利进术用行,管过要线关求敷运电设行力技高保术中护。资装线料置缆试做敷卷到设技准原术确则指灵:导活在。。分对对线于于盒调差处试动,过保当程护不中装同高置电中高压资中回料资路试料交卷试叉技卷时术调,问试应题技采,术用作是金为指属调发隔试电板人机进员一行,变隔需压开要器处在组理事在;前发同掌生一握内线图部槽纸故内资障,料时强、,电设需回备要路制进须造行同厂外时家部切出电断具源习高高题中中电资资源料料,试试线卷卷缆试切敷验除设报从完告而毕与采,相用要关高进技中行术资检资料查料试和,卷检并主测且要处了保理解护。现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在开始学习MQL4编程之前,我们先明确课程的范畴。

首先要强调的是,本书中所讨论的程序,都只能在MetaTrader4客户端中运行。

下图1显示了这些程序在交易管理系统中的位置。

为了更好地理解它们在交易管理中的作用,请看图1:
图1 MQL4编写的程序在MetaTrader 4 客户端中的示意图
学习MQL4编程,必须熟悉MQL4客户端软件。

客户端软件隶属于在线交易系统,这一系统还包含了位于交易中心(dealing center)的服务器(server)。

交易中心再和其他市场参与者——银行和机构交易者——相连。

客户端内建信息平台,平台是一系列参数的集合,它们指明市场状况以及交易约束条件。

平台的信息包括:当前价格,最大手数、最小手数,最小止损差价,是否自动交易以及许多其他能表明当前市场状况的参数。

客户端收到新的点数(ticks)后会更新信息平台(图1中的绿线)。

内置工具
客户端包含有内置工具,可以用来技术分析,手工交易。

内置工具提供技术指标、支撑线压力线、趋势通道以及斐波回撤水平等技术分析手段。

对于手工交易,可以通过订单工具栏完成。

交易者可以用订单工具栏开立、结束、修改订单。

此外,客户端还有自动管理止损位置的选项。

交易者使用内置工具,开立订单,发送到服务器。

欲了解更多的客户端信息,请参考“用户指导”(客户端安装目录\Terminal.chm).
编程工具
MetaTrader 4客户端的市场分析和交易管理功能,是借助编程工具实现的。

MQL4
语言允许创建以下三种类型的程序,并在客户端中执行。

∙自定义指标 - 以图形方式显示作者所发现的市场规律的程序;
∙智能交易 - 能够自动化大部分交易操作和自动化交易的程序(后文统称
EA);
∙脚本 - 用来执行包括交易操后一次性操作的程序。

图1中蓝色的箭头显示,和执行手工交易的嵌入式工具一样,应用程序也有访问信息平台的权限。

如红色箭头所示,应用程序也可以对客户端自身加以管理。

不同类型的程序可以同时运行,并交换数据。

利用这些应用程序,交易者可以自动化大部分交易操作,或者创建一个无需人工干预的自动化交易机器人。

交易者可以在客户端上同时使用应用程序和人工交易工具,互为补充。

MetaTrader在线交易系统的基本技术特点,是所有的管理动作都由客
户端产生,再交由server执行。

应用程序(EA、脚本、指标)只能
作为客户端的一部分运行,由客户端连接到服务端(交易中心)。


务端是不会部署应用程序的。

服务端只被允许处理来自客户端的交易信号。

如果客户端未能接入互联网,或运行于其上的应用程序(EA或脚本)没有发送操作命令,则服务端不会有变化。

我们将学习各种程序(EA,脚本和客户指标),用它们达成部分或完全自动化交易的目标,拓展交易信息管理的手段(见图1)。

本书会讲解程序的部件和编写、运行程序的原则。

同时,提供详细的程序样例和客户端信息平台的参数说明,程序运行期间可以使用这些参数。

自动化交易程序要比手动交易管理工具更具潜力。

程序常见的用途,是可以减少交易时在电脑前看盘的时间。

同时,也可以缓解精神压力,减少因情绪极度紧张造成的错误。

但是,最主要的用途,是交易者可以将自己的交易心得编写成程序,用历史数据验证并优化参数,最终,实现无需人工干预的交易策略。

相关文档
最新文档