![](/imgs/toolMall/wechat.png)
![](https://rrh123-com.oss-cn-hongkong.aliyuncs.com/rrh123/common/images/1717669824145.jpg)
在今天的课程当中,将是MQL4 EA编程基础知识学习的一个里程碑,随着本章节的结束,下一期我们将开始EA编程的实操环节,以及图表对象编写、面向对象编程部分。
对于大多数EA编写,最少不了的就是货币数据,它可以是任何我们能看到的值,也可以是一些一些我们看不到的数据。在以前的基础教学当中,只讲了语法以及各种函数、数据结构的用法,今天的课程我们将学习怎样获取货币数据,来为之后的EA编写做准备。
认识货币信息函数和常量
1、获取货币的基本数据
我们可以借助4个主要行数,每一个函数都是带有两个参数,既货币名称和类型常量;其中最常用的函数MarketInfo(),可以获取大部分我们日常编程所需的基础数据;额外的3个则是在这个的基础上做了详细分类,包括数据数据类型、数据名称等。
SymbolInfoDouble、SymbolInfoInteger、SymbolInfoString这三个函数的使用方法和MQL5一致,但是部分数据在MQL4当中并不支持获取。所以综合下来,我们使用MarketInfo()函数基本能够满足日常需求。
由于SymbolInfoDouble、SymbolInfoInteger、SymbolInfoString三种方式的详细信息很庞大,这里就不列举了,在编译器中通过F1自行在帮助手册中查看和学习。
2、获取更详细的K线数据
以下10个函数可以弥补前面介绍的4个函数的很多缺点,支持更加详细的货币数据获取方式;其中每个函数都代表了不同的功能,以及使用不同的参数。具体结构和功能介绍如下所示:
3、预定义常量 - 【复习】
在之前的课程中我们学了预定义常量,下图这几个常量的功能和今天介绍的函数有着一些相同的功能。
注意:最大的区别在于,预定义常量只支持当前货币,也就是不支一个图表上处理多个货币的EA逻辑。这点必须得注意区分。
实践
1、基础货币数据的应用
在下方代码中,我封装了一个专门用于发送空单的函数,对于要获取的关键信息这里使用MarketInfo()函数来获取!包含点差和BID价格,由于封装的作用在于适配所有货币,那么这些关键信息可以根据传入的货币来自动识别,这样并可以同时满足一图多货币交易或者单货币交易的空单需求。
当然,这只是一个简单的示例,你要是想适配所有的订单类型,以及在函数内做盈损赋值的话,可以按照自己的想法进一步完善这段代码。
2、用详细K线数据创造一个简单的开仓信号
具体的逻辑如下:
获取当前货币对 H1 周期内倒数第 2、3、4、5 根 K 线的最高价,分别存储在 high1、high2、high3、high4 变量中。
首先判断当前倒数第 2 根 K 线的最高价 high1 是否小于倒数第 3 根 K 线的最高价 high2。
如果上述条件成立,则继续判断倒数第 3 根 K 线的最高价 high2 是否小于倒数第 4 根 K 线的最高价 high3。
如果上述条件也成立,则继续判断倒数第 4 根 K 线的最高价 high3 是否小于倒数第 5 根 K 线的最高价 high4。
如果上述三个条件都成立,则说明出现了 4 根连续阴线,根据这个形态可以进行相应的交易策略逻辑处理。
3、【进阶用法】使用预定义常量来编写两个用于返回K线形态判断的函数
这部分创建信号的内容我会放到后面章节再细说
本章知识点:
- 学习和使用MarketInfo()函数获取货币的关键信息
- 了解SymbolInfoDouble、SymbolInfoInteger、SymbolInfoString三个函数
- 学习iHigh、iLow、等10个货币K线数据数据获取函数的使用