Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【漆学军】EA编程速成教程(1)准备知识

【漆学军】EA编程速成教程(1)准备知识

原创
作者头像
漆学军
修改于 2019-11-18 02:46:58
修改于 2019-11-18 02:46:58
3K0
举报
文章被收录于专栏:EA编程速成教程EA编程速成教程

EA编程速成教程要求你必须了解并具备如下一些知识和能力:

第一、需要具备一定的编程基础,最好是熟悉任意一门传统编程语言,比如说C语言,VB等等,都可以,需要了解程序的逻辑。

第二、你需要了解MT4是什么,MT4就是MetaTrader 4外汇交易软件。

第三,你需要了解EA是什么,我相信您肯定知道什么是EA,EA就是Expert Adviser(智能交易系统),EA就是使用MQL4语言编写的程序,EA程序使用在MT4软件上面,可帮你自动进行外汇黄金期货交易,至于什么时候交易,怎样买卖,什么时候平仓等等问题,就看你的EA代码是怎样写的了。EA本身没有分析判断能力,我们写EA的人想要让EA具备什么能力,EA就可以具备什么能力。 什么是速成教程? 就是教会你在很短很短的时间内就可以学会如何编写EA,这个时间究竟有多长,在于你的基础和理解能力。 预计快的话1到3天,慢的话5到10天即可。 什么叫“易学难精”? 就是你很快的就上手,难在成为厉害的高手。 这需要时间去多多看别人的代码,多多写自己的代码。 久而久之你就可以是EA编写高手了。

学会了EA编程之后,建议先去为别人写写代码,一来可以自己多多练手,二来可以搜集各种各样的策略,最终为自己设计策略编写EA服务。

下面进入正题,首先来看看一个MT4是什么样子的。

MetaTrader4软件界面
MetaTrader4软件界面

在MT4软件上点“工具”菜单,即可看到“MQ语言编辑器”,点击即可打开

MetaEditor
MetaEditor

我们新建一个空的EA程序,系统默认自带了部分EA属性和3个函数如下:

默认空的EA程序代码
默认空的EA程序代码

我们来对这段代码做个简单的解释:

1到5行,还有10,11,12,20,21,22等等,由双斜杠(“//”)开头的行为注释行,程序不会执行,只会在编辑代码的时候帮助我们了解程序。

6,7,8,9行是由“#property”开始,property在英文里面是属性的意思,代表这几行展示了EA的相关属性。

13到19行是初始化函数OnInit(),意思是EA刚被加载到图表上去正是运行之前执行的一些初始化操作。

23到27行是反初始化函数OnDeinit(),细心地朋友可以发现,这个函数和初始化函数非常相似,就是在Init前面加了个De,所以被称为反初始化函数,此函数在关闭MT4,卸载EA之后执行一次。

31到35行为EA的tick函数,意思就是加个每波动一次,执行一次函数体里面的代码。 什么是“.mq4”? EA制作好了就save成.mq4的文件 这文件是程序源码文件,可以修改的 什么是“.ex4”? EA制作好了 按“编写”就会自动save成.ex4的文件 这文件是不可以被修改的 这文件是加密的 可以出售的文件。

【漆天编程】

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【漆学军】EA编程速成教程(3)设置EA属性
大家好,我是漆天编程团队的漆学军,也是MT4专家论坛的创办者,下面是我为大家准备的《EA编程速成教程》第三课。
漆学军
2019/12/27
1.8K0
【漆学军】EA编程速成教程(3)设置EA属性
【漆学军】EA编程速成教程(2)第一个程序:下单
大家好,我是漆天编程团队的漆学军,也是MT4专家论坛的创办者,下面是我为大家准备的《EA编程速成教程》第二课。
漆学军
2019/12/27
1.9K0
【漆学军】EA编程速成教程(2)第一个程序:下单
【漆学军】EA编程速成教程(4)修改止损止盈
大家好,我是漆天编程团队的漆学军,也是MT4专家论坛的创办者,下面是我为大家准备的《EA编程速成教程》第四课。
漆学军
2020/04/16
2.2K4
【漆学军】EA编程速成教程(4)修改止损止盈
MT4行情交易API接口开发手记
1、用C++编写一个动态库文件,在里面实现行情和交易数据调用接口,将报价数据和K线数据写入数据库中,并从数据库中获取外汇量化系统发出的交易指令。 2、在MT4中编写EA文件,在MT4上不间断运行,从MT4平台实时获取报价和K线数据,并调用动态库写入数据库中,于此同时,不断从数据库中获取交易指令,再调用MT4的交易指令完成交易。 采用此种方法的好处就是兼容性强,只要打开MT4软件运行EA,就可以完成行情和交易接口的获取,也不用管是哪个外汇平台,即使MT4软件升级了也能继续用。缺点就是必须打开一个MT4软件专门获取行情和报价数据,同时每个交易的账户也必须要运行一个MT4软件,比如有10个外汇账户,就必须运行10个MT4软件。交易账户不多的话,运行速度和各方面指标也尚可接受,周末都不用重启或关闭,基本上实现7X24小时不间断运行。 一晃自己的量化系统就运行了几年了,中间也不断进行各种优化,但随着交易账户的不断增加,对软硬件的考验就越来越高了,一台普通的服务器,同时运行10多个账户就感觉有点吃力了,毕竟MT4本身就是一个大型的行情和交易软件,要占用不少软硬件资源,还要加上数据库服务器,现在感觉3、4台服务器都不够用了,网络带宽也开始吃紧,已经到了非改不可的时候了。 对于MT4行情和交易的API接口,自己一直都有耳闻,据说这种API接口,可以直接连接MT4行情和交易服务器,而且可以不用管是哪家外汇平台,只要该平台支持MT4软件即可使用。现在市面上很多跟单系统和跟单平台,就是通过该API接口来实现跟单服务的,但感觉这种API接口应该不是MT4软件开发商推出的,属于第三方软件,甚至有可能就是通过对MT4软件进行逆向分析提取出来的东西,一旦MT4软件升级了,就有可能导致API接口失效。记得以前网上就有通达信的行情和交易接口,可以获取国内A股行情并实现交易,自己当时还付费买了一套回来并使用了一段时间,据说也是逆向分析通达信系统得来的,但用了一段时间后,随着通达信软件和券商后台系统的升级,就无法使用了。 去年初的时候,自己就获取了一套MT4行情和交易接口及相关调用资料,但一直未去深入研究,因为该接口就仅仅是一个DLL文件,需要在Window 的.Net 平台下用C#开发和调用,自己对C#并不熟悉,这种托管DLL用其它的开发语言也不好调用,最主要是当时的重心和精力都放在量化系统和缠论策略的开发和优化上,对这种可有可无非要不可的东西实在无暇兼顾。但想着以后随着账户的不断增加,这种API调用接口肯定要用到,毕竟同时打开几十个MT4软件来实现交易接口太费资源了!自己也曾想到花点钱请别人开发,但想着要和自己的量化系统深度融合在一起,沟通和开发起来也挺麻烦,再加上自己本身就是程序员出身,还是适当的时候自己开发吧!从那时起,闲暇时间自己翻看一下C#的编程书籍,了解一下C#的语言和用法,先为以后的使用打点基础。 上周,将自己几个要完成的开发工作按重要性和紧急性排列出来各种比较后,终于决定将MT4API接口的开发提上日程了,说干就干,在电脑上安装好VS2019后,这个星期就忙着搞开发了。整个接口的需求和流程其实自己已经非常清晰,唯一不足的地方是对VS2019和C#还不熟悉,但开发语言都是相通的,不懂不会的地方就查查书,或者百度及CSDN上搜索一下就好了。 花了两天时间,完成了大致的软件界面,并实现了行情和交易接口的简单调用,成功返回了想要的各项数据,开发工作挺顺利,各项功能正慢慢实现。自己是用真实的交易账户来测试的,想着这样频繁的测试,不断登录和退出,途中还会有不少出错和非法调用,会不会引起外汇平台的警觉,如果把自己的账户封禁掉,那可就麻烦大了,因此马上申请了个模拟账户来测试,结果悲剧了,接口竟然无法登录了,返回Old Version,看来平台的模拟账户后台服务器已经升级了,不再支持这个接口,而真实账户的后台服务器,可能考虑到兼容性的缘故,还没有进行更新,或者还兼容这个接口版本,因此还能使用。记得去年底有一段时间,听说很多跟单系统或跟单平台都无法使用了,就因为MT4软件商强制升级了一次,有的MT4后台服务器已经不再支持这个接口了。想着这样下去也不是办法,因此又开始想办法去找这个接口的最新版本,皇天不负有心人,仅半天时间就找到了一个新的API接口版本,不过这个接口有一点点限制。在这里不得不鄙视一下C#,像C#,JAVA这种开发语言开发出来的托管代码,真的很容易被反编译,简直就和真正的源码看起来没有什么差别,因此很快就被我把限制解除了。 正好这两个星期新冠疫情吃紧,有的小区还被封了,羽毛球馆也不让打球了,因此整个星期几乎没有出门过,就窝在家里辛辛苦苦搞开发了,老骥伏枥,像我这种老程序员了,想不到开发效率还挺高,到了今天周五,就把整套接口完成了。现在回想过来,难点上除了本身对C#进行各种熟悉外,怎么优化速度和算法也花了不少时间,这里就通过缓冲区来实
全栈程序员站长
2022/09/02
5.2K3
MT4行情交易API接口开发手记
python控制mt4自动交易软件下载_MT4 EA智能自动交易系统使用教程[通俗易懂]
1.首先,你要有一个EA,必须要有以ex4为扩展名的,如果只有mq4文件的话,就要用MetaTrader自带的编辑器MetaEditor打开,将mq4通过编译(compile)并且要不出现错误,才能在原存放mq4的文件夹下面得到一个同名的ex4文件。
全栈程序员站长
2022/09/02
1.4K0
妥妥的世界第一:为什么MT4软件的地位无法撼动?
我是漆学军,2004年接触MT3.83的时候,还没有太在意,直到2005年,MT4正式推出之后,我就再也没有真正爱上别的软件,即便是MT4的升级版本MT5,我也一直提不起太大兴趣。
全栈程序员站长
2022/09/02
1.2K0
【漆学军】分享我自用多年的马丁策略EA完整源码(winkey),曾半年将我账户翻3倍
马丁策略一直都是具有很大争议的,因为有太多的人使用这个策略爆仓了,但是依然有人使用这个赚钱了。那些使用这个策略爆仓了的人会认为马丁策略不行,是垃圾,我是不同意这种说法的。
漆学军
2021/06/07
4.3K4
【漆学军】分享我自用多年的马丁策略EA完整源码(winkey),曾半年将我账户翻3倍
mt4编程语言 c语言,MT4编程之MQL4编程语言介绍[通俗易懂]
MetaQuotes Language 4 (MQL4) 是一种新的内置型程序用来编写交易策略。 这种语言可以创建你自己的智能交易,使自己的交易策略能够完全自动地执行。而且,MQL4还能自定义客户指标,脚本和数据库。
全栈程序员站长
2022/08/28
6.3K0
【零基础】MT4量化入门一:跑一个简单的boll
  今天开始研究MT4了,MT4是大大有名的外汇交易和量化软件,使用一种叫做MQL的语言来开发量化程序(跟C比较像)。因为是外国人做的,用的也大部分是外国人,使用起来不是很顺手,跟极星各有优劣吧。这里我就先逐步讲一下MT4的使用,然后再简单跑一个boll指标,最后汇总下使用心得。
全栈程序员站长
2022/08/31
1.8K0
【零基础】MT4量化入门一:跑一个简单的boll
五步学会任何编程语言
有些人喜欢学习新的编程语言,也有一些人觉得学习一种都是可望不可及的事情。在本文中,我将向你展示如何像程序员一样思考,这样你就可以自信地学习任何一门你想要学习的编程语言。
用户8639654
2021/09/13
4580
各路大牛的C语言编程建议和技巧,看完感触颇深
我们鼓励在编程时应有清晰的哲学思维,而不是给予硬性规则。我并不希望你们能认可所有的东西,因为它们只是观点,观点会随着时间的变化而变化。可是,如果不是直到现在把它们写在纸上,长久以来这些基于许多经验的观点一直积累在我的头脑中。因此希望这些观点能帮助你们,了解如何规划一个程序的细节。(我还没有看到过一篇讲关于如何规划整个事情的好文章,不过这部分可以是课程的一部分)要是能发现它们的特质,那很好;要是不认同的话,那也很好。但如果能启发你们思考为什么不认同,那样就更好了。在任何情况下,都不应该照搬我所说的方式进行编程;要用你认为最好的编程方式来尝试完成程序。请一以贯之而且毫不留情的这么做。
C语言中文社区
2022/05/30
8450
各路大牛的C语言编程建议和技巧,看完感触颇深
要成为年薪百万的技术大牛必经历这5个阶段, 收好这份超实用的技术进阶指南 | 技术头条
2018年的那股区块链热潮也着实让区块链开发人员火了一把,他们(她们)拿着几十万,甚至是上百万的年薪,头顶着耀眼的光环,成了大家心目中的男神。
区块链大本营
2019/04/28
5160
要成为年薪百万的技术大牛必经历这5个阶段, 收好这份超实用的技术进阶指南 | 技术头条
悟透一个小窍门,你就能举一反三掌握所有编程语言
当你程序员当久了,你会慢慢了解到,许多真 . 大佬都是编程语言通。他们在彻底掌握了一门语言之后,就能够很自信的觉得自己能够轻松掌握别的语言。这种能力可把许多人馋哭了,到底是怎么回事?为什么别人能够轻松驾驭所有语言,而我不行?
用户6901603
2024/02/22
1470
悟透一个小窍门,你就能举一反三掌握所有编程语言
程序员到底如何成为编程高手或以此创业?
每个IT企业,尤其是初创企业,非常苦恼:找不到好的程序员。现在大学、软件学院及各种培训机构,每年培养几十万的程序员,毕业的每个人都有同样困恼:找不到好的工作。问题出在哪里呢?
Spark学习技巧
2018/08/01
3450
程序员到底如何成为编程高手或以此创业?
零基础转行学习python是否还在纠结?
Python编程语言由于自身具有的“清晰”、“简略”等特点而受到众多使用Python编程语言的IT从业者喜爱。而且,对于初学者来说,比起其他编程语言,Python 更容易上手。加上很多企业都使用Python编程语言,促进了Python程序员的市场需求量增加。
程序员鑫港
2022/01/06
3800
系统编程语言Rust特点介绍(1)
最近在学习Rust语言,感觉这门语言有点意思,因此写一篇文章分享。我不会去介绍Rust的基本语法,什么变量声明,if..else..,循环等等。这些东西,文档介绍的很清楚,何必多此一举。本文主要介绍Rust这门语言的特点,和其它语言的对比。
glinuxer
2019/09/28
1.6K0
系统编程语言Rust特点介绍(1)
【董飞】谷歌研究主管论人工智能以及程序员自我修养
【新智元导读】谷歌研究主管Peter Norvig在文中介绍了他对人工智能、个人计算和地图服务诸多领域的看法。文中提供了Peter写了大量AI笔记的个人网站和公开课视频地址。Peter Norvig 并不相信计算机能力的增强会把我们带到奇点。他还认为,至少要花上10年或10000小时才可能学好编程。 董飞:Peter Norvig任职于Google,其职位是研究主管(Director of Research). Peter Norvig是享誉世界的计算机科学家和人工智能专家。他是 AAAI 和 ACM
新智元
2018/03/22
6260
【董飞】谷歌研究主管论人工智能以及程序员自我修养
Android:知道类加载的过程面试还是卡壳?干货总结,一网打尽“类”的基础知识!
之前说了类加载的过程,但是有的读者表示还是有些面试题还是答不来,所以今天就来总结下类加载、对象实例化方面的知识点/面试题,帮助大家加深印象。
Android技术干货分享
2021/03/19
4160
Android:知道类加载的过程面试还是卡壳?干货总结,一网打尽“类”的基础知识!
Java编程基础知识点和技术点归纳
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
用户5814672
2019/07/12
5300
如何高效学习一门编程语言
首先这篇文章是建立在有一些编程基础之上来展开的,做为一种效率学习编程语言的自我总结输出。把编程语言当做一个工具,而这些不同种类的工具有很多的共通之处,抓住其中的关键之处可以大大提升学习效率,也是一篇自我总结的学习方法论,里面有的方法可能不适合我,但也会讲讲。如果要学习一门编程语言,先要问一下为什么要学?学会了能做什么?要达到什么样的目标?只有把这些问题想清楚了再去做,不然稀里糊涂不知所以,很可能半途而废。想明白了就要坚持去做,不要再东望望西看看,想、做、坚持三位一体是学到的基本三要素。
知一
2021/12/07
5470
如何高效学习一门编程语言
推荐阅读
相关推荐
【漆学军】EA编程速成教程(3)设置EA属性
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档