EA开发系列---EA初始化以及Deinit事件

本文介绍了EA(专家顾问)在MT5平台中的初始化回调函数OnInit和Deinit事件处理。OnInit用于程序初始化,如变量初始化、参数检查和获取持久化数据。返回值表明初始化状态。OnDeinit在EA卸载、图表周期变化或MT5关闭时调用,主要用于资源释放。文章提供示例代码供读者实践。
摘要由CSDN通过智能技术生成

前面的文章中,写了一个比较简单的EA(专家),里面涉及了一些MT5中常用的方法,也展示了EA的大概框架。从这里开始将会以及那些内容为基础进行逐步细化,让你了解MQL5的细节内容。

回调函数以及机制

EA是不能独立运行的,它必须依赖图表,EA就像一个可以热插拔的插件一样被运行在某一个图表上。而图表上发生任何的变化,发生的任何操作等会通过特定的回调函数(或许可以称之为钩子)通知EA,这样EA就可以在特定的时机对特定的事件做出反应。下面介绍一些比较重要的回调函数以及相关机制:

初始化–OnInit

当初始化事件发生的时候,MT5就会调用OnInit函数通知EA,这里你可以完成一些程序级别的初始化操作,比如:初始化变量等等。这里所说的“初始化事件”可能包括:
1、EA被加载到图表中
2、EA在运行状态下,代码被重新编译
3、EA所运行的图表周期发生改变。(比如,从H1周期切换到H4周期 )等等
需要注意的是,以上三点是我在使用EA的过程中发现的,如果有遗漏也请大家给予补充。

个人习惯:我通常会在OnInit函数里做一些EA范围内的全局初始化工作,包括:
1、初始化(new)指针
2、检查参数设置是否符合标准
3、获取持久化数据(比如:配置文件数据),连接数据库等等

OnInit函数的原型如下所示:

int OnInit(){
   }

从函数的定义可以知道,我们在完成初始化工作以后需要有一个整型的返回结果,用于指示MT5后续的处理。返回码包括:
1、INIT_SUCCEEDED:表示EA初始化是成功的。
2、INIT_FAILED:EA初始化失败。该错误表示初始化过程中发生了非常严重的错误,而无法继续执行
3、INIT_PARAMETERS_INCORRECT:EA的参数验证失败,这可能是EA的参数设置出了问题
4、INIT_AGENT_NOT_SUITABLE:这个错误表示EA本身并没有问题,但是MT5认为目前的系统环境不再适合EA继续运行,比如:内存不足等问题。
注意:EA初始化的返回值是程序员手工强制返回的,也就是说你认为初始化成功就成功。这样做会给正给EA带来很大的风险需要格外小心。如果,这个返回值被设定为非INIT_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值