MQL5关键知识点总结二.docx

上传人:b****7 文档编号:23327942 上传时间:2023-05-16 格式:DOCX 页数:17 大小:681.93KB
下载 相关 举报
MQL5关键知识点总结二.docx_第1页
第1页 / 共17页
MQL5关键知识点总结二.docx_第2页
第2页 / 共17页
MQL5关键知识点总结二.docx_第3页
第3页 / 共17页
MQL5关键知识点总结二.docx_第4页
第4页 / 共17页
MQL5关键知识点总结二.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

MQL5关键知识点总结二.docx

《MQL5关键知识点总结二.docx》由会员分享,可在线阅读,更多相关《MQL5关键知识点总结二.docx(17页珍藏版)》请在冰豆网上搜索。

MQL5关键知识点总结二.docx

MQL5关键知识点总结二

MQL5关键知识点总结

(二)

薛辉原创

知识点颜色说明:

01、不同字体表示一般级别的知识点。

02、加黑字条表示中等级别的知识点。

03、红色字体表示高级别知识点。

04、红色加黑字条表示极其重要、易出错知识点。

0201、OnStart()函数就是启动事件处理程序,运行脚本时自动生成。

0202、OnInit()函数是初始化事件处理程序。

0203、必须是空型或者整型,无参数。

0204、初始化事件处理程序在EA交易或者指标下载后即时生成;它不生成脚本。

0205、OnInit()函数用于初始化。

如果OnInit()返回值为整型,非零结果意味着初始化失败,

生成初始化失败原因代码REASON_INITFAILED。

0206、OnDeinit()函数称为失败初始化,是初始化失败事件处理程序。

0207、必须是空型且有一个包括初始化失败原因代码的常量整型参数。

0208、如果声明不同类型,编译程序会发出警告,但函数不可调用。

0209、对于脚本来说不会生成初始化失败事件,因此OnDeinit()函数不用于脚本。

0210、仅仅EA交易依附的图表中,交易品种收到新订单号时EA交易会生成新订单号事件。

0211、自定义指标或者脚本中确定OnTick()函数是无效的,因为订单号事件不为它们而生。

0212、订单号事件只为EA交易而生,但是却不意味着EA交易需要OnTick()函数,因为EA交

易不仅需要生成订单号,也需要生成计时器,预定事件和图表事件。

0213、计时器事件发生时调用OnTimer()函数,由系统计时器生成仅用于EA交易-不能用于

脚本或者指标。

0214、函数EventSetTimer()接收事件,当同意该事件声明时,设置事件发生频率。

0215、可以用函数EventKillTimer()为特殊EA交易注销计时器事件。

0216、函数必须为空值,没有参数。

0217、建议在OnInit()函数中调用EventSetTimer()函数。

0218、而EventKillTimer()函数可以在OnDeinit()中调用。

0219、每个EA交易,每个指标都有其独自的计时器且仅通过它来接收事件。

0220、如果创建了计时器但没有用EventKillTimer()函数禁止,那么一旦MQL5程序停止,计

时器被强制破坏。

0221、OnTrade()交易发生时调用这个函数,改变下订单和持仓列表,订单历史记录和交易

历史记录时会出现。

0222、当交易活动执行挂单,持仓/平仓,停止设置,启动挂单等等,订单和交易历史记录

或者仓位和当前订单列表也会相应改变。

0223、接到这个事件时(需要交易策略状态)用户必须独自确认交易账户状态。

0224、如果函数OrderSend()成功调用,且返回了真实值,意味着交易服务器已经提交订单

并确定了订单号。

0225、服务器一旦处理这个订单,交易事件就生成了。

0226、如果用户记住了订单号值,OnTrade()函数执行时,用这个值可以看到订单情况。

0227、函数OnTester()是外部EA交易历史测试结束后自动生成的测试事件处理程序。

0228、这个函数在OnDeinit()之前调用,且有同样的双精度型返回值。

0229、只在EA交易测试时使用OnTester()。

0230、其主要作用是计算某个值,该值用作遗传最优化自定义标准。

0231、遗传优化中,生成结果用降序,例如从优化标准查看点,最佳结果是那些最大值

(OnTester函数带进账户的最大自定义优化标准值)。

0232、这种情况下:

最差值放在最后或者排除不参与下一步生成。

0233、若要接收任一交易品种的BookEvent,需要事先同意用函数MarketBookAdd()接收这

个交易品种的BookEvent。

0234、如果不同接收某个特定交易品种的BookEvent,可以调用MarketBookRelease()。

0235、与其他事件不同的是BookEvent是直播。

0236、意味着如果EA交易同意用MarketBookAdd接收BookEvent,其他有OnBookEvent()

处理程序的EA交易也会收到这个事件。

0237、因此分析交易品种名称是必须的,可以conststring&symbol参数传到处理程序。

0238、OnChartEvent()是ChartEvent的处理程序:

0239、CHARTEVENT_KEYDOWN—击键,图表窗口定格;

0240、CHARTEVENT_OBJECT_CREATE—创建图解物件;

0241、CHARTEVENT_OBJECT_CHANGE—通过属性对话框改变物件属性;

0242、CHARTEVENT_OBJECT_DELETE—删除图解物件;

0243、CHARTEVENT_CLICK—鼠标单击图表;

0244、CHARTEVENT_OBJECT_CLICK—鼠标单击属于图表的图解物件;

0245、CHARTEVENT_OBJECT_DRAG—用鼠标移动图解物件;

0246、CHARTEVENT_OBJECT_ENDEDIT—图解物件标签编辑输入框中完成文本编辑;

0247、CHARTEVENT_CUSTOM+n—用户ID,0-65535之间范围。

0248、CHARTEVENT_CUSTOM_LAST—自定义(CHARTEVENT_CUSTOM+65535)接受的最后一个

ID。

0249、OnCalculate()函数只在自定义指标中调用,通过Calculate计算指标值是必须的。

0250、通常在接到指标计算的交易品种新订单号时发生。

0251、这个指标不需要附在交易品种的价格图表上。

0252、OnCalculate()函数有个返回值int。

0253、有两个可能定义。

一个指标中不可以有两个函数版本。

一种是用于单数据缓冲中计算

的指标。

0254、在函数内可变量的声明是局部的。

0255、局部变量在声明的部分里是被限定的。

0256、局部变量可以由任意一个表达式结果初始化。

0257、每次函数的运行只可以初始化一个局部变量。

0258、局部变量储存在相应的存储器上。

0259、变量范围是涉及变量的模块部分。

0260、模块中声明的变量(内部),有模块规定其范围。

0261、如果变量声明的范围是在启动模块,则以终止程序结束。

0262、通过函数的变量是局部的。

范围是在作用块内。

0263、在作用之内正式变量的名称必须不同于其他外部定义变量和函数变量。

0264、作用块内的正式变量值已经被赋予。

0265、如果正式参数以常量修饰符声明,其值在函数中不能改变。

0266、静止存储类变量被称为静态变量。

0267、静态变量在数据类型之前指定静态修饰符:

static。

0268、静态变量可以通过相关的常量和常量表达式初始化。

0269、静态变量存在于程序执行期,在特别函数OnInit()调用前初始化。

0270、如果未指定初始化值,静态变量为零初始化值。

0271、关键字static声明的局部变量通过函数使用期保留值。

0272、下次调用函数时,局部变量会包含上次调用的值。

0273、任何变量,除了函数的形式参数,都称为静态变量。

0274、如果局部变量声明不是静态,变量内存会在程序中自动分配。

0275、全局变量通过函数外部描述声明而创建。

0276、全局变量作为函数被定义在相同水平。

0277、全局变量的范围是整个程序。

0278、全局变量在所有程序内是被定义的。

0279、如果它的值没有被定义,初始化值为零。

0280、全局变量只对于相应的常数初始化。

0281、全局变量只可以在程序载入客户端以后初始化。

0282、注解:

变量在全局变量的水平位上不能够与客户端GlobalVariable...()函数混淆。

0283、关键字extern用来声明变量标识符,作为全局使用期的静态存储标识符。

0284、从程序启动,这些变量即存在,其内存会在程序启动后即时分配和初始化。

0285、创建多源文件程序,这个情况下直接使用预处理#include。

0286、外部声明的同一类型和标识符的变量位于一个项目中的不同源文件。

0287、编译整个项目时,所有同型同标识符的外部变量与全局变量池相连。

0288、外部变量用来分离编译源文件。

0289、外部变量可以初始化,只能一次禁止几个同型同标识符外部变量初始化。

0290、#define直接用来指定常量助记名。

0291、#defineidentifiertoken_string在编译阶段直接替换。

0292、#defineABC100

#definePI3.14

#defineCOMPANY_NAME"MetaQuotesSoftwareCorp."

0293、每个mql5-程序都允许指定额外的名为#property的特殊参数。

0294、有助于客户端不用启动程序就能够提供定制的互联网服务。

0295、程序属性设置的格式为:

#propertyidentifiervalue

0296、

0297、

0298、

0299、

0300、#include命令可以放置到程序的任意部分,但是通常所有文件的源代码被统一放置。

0301、#include在系统目录下查找包含文件。

#include"file_name"在指定目录下查找包含文件。

0302、Mql的日期时间量:

0303、Mql比率:

0304、

0305、在向服务器发送交易操作要求时,推荐进行一下检测。

0306、该检测使用OrderCheck()函数执行。

0307、检测要求和MqlTradeCheckResult结构体变量已传递,检测结果会记录该变量。

 

0308、这个结构体主要用于向服务器发出信息,检测能否成交。

0309、在MQL4实战中我们也发现,很多时候账户情况复杂。

0310、可能遇到:

保证金不足,可能无法一次选中某些订单,可能连接服务器超时,可能

发送数据到服务器处理时服务器未及时响应。

0311、MQL5提供的这些细致的功能为精确把握程序流程提供给了依据。

0312、返回当前交易品价格的结构体:

0313、对于每个可执行的MQL5程序的有一套变量都是支持的。

这就是预定义变量。

0314、可以通过MQL5程序获得当前即时价格(EA交易、脚本或者自定义指标)。

0315、预先定义变量的值在MQL5程序启动之前通过客户端建立。

0316、预先定义变量是不变的,也不会通过MQL5程序转变。

0317、例外是:

特殊变量_LastError,通过ResetLastError函数重设至0。

0318、_Digits变量保留小数点后几位。

它定义了当前图表交易品种的价格精确度。

0319、可以使用Digits()函数。

0320、_Point变量包括货币报价中当前交易品种的点数信息。

0321、可以使用Point()函数。

0322、_LastError变量包括最后一个错误的代码。

0323、在MQL5程序运行中发生,使用ResetLastError()值能重设成0。

0324、获得最后错误代码,使用GetLastError()函数。

0325、_Period变量包括当前图表时间表的值。

0326、也可以使用Period()函数。

获得当前图表的时间尺度级别。

0327、_StopFlag变量表示MQL5程序停止标签。

0328、当客户端想要停止程序,建立_StopFlag变量为真值。

0329、为了检测_StopFlag,你可以使用IsStopped()函数。

0330、MQL5可以反过来检测程序运行状态功能就更加强大了。

编写程序时

0331、_Symbol变量包括当前图表的交易品种名称。

0332、也可以使用Symbol()函数。

0333、_UninitReason变量表示无法初始化程序中的代码。

0334、一般UninitializeReason()函数中包括代码

0335、Alert()函数在独立窗口中显示消息。

0336、这是最长使用的一个输出函数,直接弹出一个独立窗口做显示。

0337、Alert()函数显示时有个缺点是:

所有过去显示的内容都会继续显示出来。

0338、Alert()函数在终端关闭之后才会清除过去所有的记录。

0339、Alert()不适合直接显示双精度数,最好使用:

DoubleToString()进行转换后在显示。

0340、MQL5中布尔型数据以true或者false字符串输出。

MQL4中是整数形式输出的。

0341、Alert()将日期以YYYY.MM.DDHH:

MI:

SS格式显示。

系统会自动转换。

0342、使用TimeToString()可以修改日期的输出格式。

0343、MQL5中Alert()函数显然内部也做很大的优化,可以根据带输入数据类型单独处理。

0344、CheckPointer()函数返回指针的类型参数:

ENUM_POINTER_TYPE。

是一个枚举类型。

0345、CheckPointer()的输入参数是一个指针类型的变量。

0346、在程序中可能调用为空的指针,在使用指针之前,应该调用CheckPointer()函数检测。

0347、到了MQL5的级别对指针的支持似乎是越来越多了。

0348、Comment()图表左上角输出注解文本在图表的左上角显示字符串。

0349、Comment()的基础参数及使用规则同Alert()一致。

0350、voidDebugBreak();在程序中设置故障断点。

用于调试。

0351、如果程序以调试的方式打开,MQL5程序的执行会被中断。

0352、此函数可以用于观察变量的值,并一步步执行。

0353、voidExpertRemove();函数停止EA交易并从图表中卸载。

0354、当调用ExpertRemove()函数时,EA交易不会立即停止。

只会设立一个停止EA操作的

标志,任何事件都不能处理。

0355、调用OnDeinit()之后EA交易就会卸载并且从图表中删除。

0356、__FUNCTION__系统变量表示:

当前所在的函数名称字符串。

0357、void*GetPointer(

any_classanyobject//任何类的对象

);

0358、函数返回对象指针。

0359、只有class类对象可以获取指针,而结构体及普通变量不能获取指针。

0360、这里的class类对象不能使用new()操作符建立。

0361、GetTickCount()函数返回电脑开机以来已过去的毫秒的数量。

0362、系统定时器限制计数器,时间以一种无符号的整数来存储。

0363、因此,如果电脑不间断的工作,每49.7天就会溢满重新开始计数。

0364、MessageBox()建立并显示对话框并管理它。

0365、一个对话框包括信息和页眉,任意预定义标签和命令按钮的组合。

0366、PeriodSeconds()返回给定周期的秒数信息。

0367、PERIOD_CURRENT常数表示的是当前图表中的时间周期。

0368、boolPlaySound(

stringfilename//文件名

);

播放\Sounds目录下的WAV声音文件。

只能播放这种WAV文件。

0369、Print()在程序中输出信息。

0370、Print()输出的信息并不显示在独立窗口中,而是显示在系统终端的“专家”窗口。

0371、Print()的使用方法和参数与Alert()函数一直。

0372、PrintFormat()。

按照给定格式进行输出。

类似于C中的printf()函数。

0373、表示输出参数类型和长度的函数也保持相同的形式规定。

0374、输出数据的类型用%加数字类型表示。

0375、取代PrintFormat()函数可以使用printf()。

0376、目前在MQL5中已经可以成功使用printf()函数输出数据并且效果不错。

0377、实战编写不普通脚本程序并且输出数据量不大的时候用MessageBox()比较方便。

0378、voidResetLastError();设立预先定义常量_LastError的值是0。

0379、voidSetUserError(ushortuser_error);

0380、ushortuser_error为用户设置的错误编号。

0381、如果函数调用成功,此时的_LastError就是:

ERR_USER_ERROR_FIRST+user_error

0382、GetLastError()的返回值也是:

ERR_USER_ERROR_FIRST+user_error。

0383、ushort的范围是从0-65535的巨大范围,所以用户定义自己的错误代码空间很大。

0384、对于成熟企业应该建立自己的错误代码库。

在系统定义的基础上定义属于自己的错

误标示、处理体系。

0385、通过FTP上传文件。

boolSendFTP(

stringfilename,//通过ftp发送的文件

stringftp_path=NULL//ftp服务器上传的文件

);

0386、FTP目录,如果目录未标明直接使用设置中描述的路径。

0387、发送文件应该在terminal_directory\MQL5\files或子文件夹中保存。

0388、如果在设置中未标明FTP地址或者访问密码,无法发送。

0389、MQL5继续保持较高的安全性,只能处理自身目录中的一些文件。

0390、boolSendMail(

stringsubject,//表头

stringsome_text//email文本

);

0391、如果邮件发送到派送队列则true,否则是false。

0392、要想发送成功需要对这里进行设置:

0393、发送在设置中能被禁止,邮件地址可能未标明,查看错误信息可以调用GetLastError()

函数。

0394、在当前执行的EA交易或脚本中Sleep()函数可以指定的时间间隔内暂停交易业务。

0395、voidSleep(intmilliseconds);函数参数以毫秒为单位的。

1000表示暂停1秒。

0396、Sleep()函数不能被自定义指标调用,因为指标的刷新同数据到来相关,Sleep()并不能

够放慢速度,

0397、智能交易每0.1second秒会检测。

0398、boolTerminalClose(intret_code);关闭终端函数。

这是MQL5中新出现的一个函数。

0399、TerminalClose()函数并不能立即终止客户端,它只命令客户端完成操作。

0400、EA交易的代码叫做TerminalClose(),它来执行立即操作。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1