作者:William
当涉及到编程和数据处理时,了解和理解数据结构是非常重要的。数据结构是组织和存储数据的方式,它决定了数据的访问、操作和管理方式。
在MQL4编程中,数据结构可以帮助我们以有序、高效和灵活的方式处理各种交易中的数据。常用的几种数据结构包括:数组、结构体、枚举。每种数据结构都有其特定的特点和用途。例如,数组适用于存储和访问有序的元素集合。
了解和理解数据结构的好处包括:
在MQL4编程中,掌握数组、结构体和枚举等基本数据结构是至关重要的。在数据组织和管理、轻松地访问和操作数据、实现复杂的EA或者指标、应对不同的交易策略等场景中非常有效。
上期知识回顾:
enum类型通常用于自定义某个属性相同的数据集,相对于bool型的使用方式,enum具有更高的灵活性,简单理解就是可以自定义多种情况出现,从外部参数中理解就是一个多选选的下拉列表,在列表成员中以小写逗号分割列表成员。
需要注意的是,在枚举成员中未分配数值的情况下,从首位以0开始依序递增自动形成(在前一位成员的基础上增加1个单位);而对于已分配数值的情况下,则会以预分配的值为准,而后续的成员也会在此基础上自动增加1个单位
定义枚举结构:
首先我们定义一段枚举类型的数据结构,
1、以SelectWeek命名一个枚举结构(不带配值),该结构由7个不带配值的成员组成,我暂且用来表示一周中的每一天。枚举成员不带配值命名,因此默认情况下,每个枚举常量的值将会从0开始自动递增。0代表了周日以此类推。
然后我们使用了该枚举结构来关联并声明了一个名为useSelectWeek的变量,并将其初始化为SelectWeek枚举结构中的Monday,表示选择星期的初始值为周一(实际值为1,因为排在了第二个)。
2、再以SelectRisk命名一个枚举结构(带配值),该结构在枚举成员中我们用三个枚举成员表示不同风险级别。注意:与不带配值的枚举不同,带配值的枚举可以通过手动指定常量的值来定义枚举成员;
通过为枚举成员指定配值,我们可以将特定的数值与枚举成员关联起来,从而在代码中使用这些枚举成员时,可以直接引用它们的配值。
使用枚举结构参与逻辑编写:
这里我们再回顾一下OnTimer()函数,OnTimer()为定时器事件函数,当定时器触发时被调用。
1、我提前在初始化函数中,设置了毫秒级计时器为500毫秒(0.5秒),这意味着接下来这段代码会以0.5秒的时间间隔不断执行。代码中我们首先定义一个字符串变量用于存放订单注释,一个整型变量用于存放手数值,并将其初始化。
2、使用switch语句进行多分支条件运算判断,据外部选择的日期类型,定义Cmt变量的实际值。
3、然后再使用布尔运算(条件运算)的方式来根据useSelectRisk的值定义lot的值。
4、这里我们使用了Comment()函数来把一些关键信息显示到图表上,关于这个函数,我会在之后的章节(终端信息输出)中详细解读,以下是显示结果。
5、经过一番判断,此时我们得到了注释和手数的值,在这一段语句中,我先手判断了手数值是否不等于0(等于或者小于,圈定的作用域中的代码都不会被执行),然后再使用OrdersTotal()函数判断持仓单是否小于5。在这两个条件中我使用到了“和”运算符&&,说明必须两个条件同时成立,才会继续执行内部代码块。
if(lot!=0 && OrdersTotal()<5)
6、使用订单发送函数根据刚刚的手数和订单注释下达订单。
*本期使用到的源码片段可私信客服获取。