香港:
  • 纽约:
  • 伦敦:
  • 东京:
  • 悉尼:
  • 香港:
  • 新加坡:
首页> 资讯> 最新 >正文

【0基础EA编程教学3-3】为编写EA做准备:获取货币数据集

William 2024-06-06 19:02:14 关注
货币数据是EA编程中最重要的一项必备流程,在今天的课程中,我们将学习怎样获取货币数据,来为之后的EA编写做准备。

文章来源:123财经导航 | william

在今天的课程当中,将是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线数据数据获取函数的使用
【免责声明】123财经导航所发布的信息内容仅供交易投资者参考,并不构成投资建议“据此操作,风险自担”。网站上部分信息内容及图片来自于网络/注册作者/投稿人,版权归原作者所有,如有侵权,请您与我们联系关闭,邮箱:938123@qq.com。
第三方账号登录
第三方账号登录
第三方账号登录
  • *站点:
  • *网址:
  • 类型:
  • 联系方式:
  • 简介:

  • RRH123欢迎您的加入!如有问题请添加咨询管理员【微信号:938123】
  • *类型:
  • *问题:
  • 图片说明:
  • 联系方式:

  • RRH123感谢您的反馈!如有问题请添加咨询管理员【微信号:938123】