1 MT4 的MACD 编程EA 详解 在MT4 安装后,默认会给用户提供几个例子程序,这些程序对于新学习EA 开发过程中有很大的帮助,下面我们就来对MACD Sample 这个例子EA 来做个解读,来看看别人是如何开发一个EA 的。 首先是注释,在MQL 语言中所有//的这一行就是注释行,系统本身不会去执行它,它只是用来解释当前代码的含义的,我们在代码中加入这些注释为了是让我们能够清楚的阅读代码的含义,在程序中加入详细的注释是一个很好的编程习惯,我们鼓励大家多加入注释。很多人觉得注释这东西因为没用在写代码中觉得很麻烦而忽略它,但是即使是自己编写的程序如果不加注释过几天就会忘记意思,还要再一行一行地看这些代码,所以注释是非常重要的。 下面这些就是定义变量,我们发现前面加上了 extern 关键字,如果在定义变量的前面有这个词说明这个变量将会被作为 EA 运行的参数,举个例子,比如我要编写一个EA,在使用过程中我想改变它的止盈和止损值,如果我程序都是事先编好的止盈止损,那么以后要改动它必须要改代码,这样不仅麻烦也不灵活,如果我把这些信息作为 EA运行参数,那么在EA 运行中就可以随时调整它了。 extern double TakeProfit = 50; extern double Lots = 0.1; extern double TrailingStop = 30; extern double MACDOpenLevel=3; extern double MACDCloseLevel=2; extern double MATrendPeriod=26; 上面定义了 6 个变量并且都是当作参数,这里设定变量名称的时候尽量使用用户可以理解的词汇,在EA 的参数设置里这些变量名就是参数的名字。值得注意的是EA 里变量名称是可以用中文的。 int start() start()函数是EA 运行的核心,MQL 语言规定了几个默认函数,其中EA 第一次运行时会调用init()函数,在这个函数里我们可以放入一些需要初始化的信息,start()函数中放我们EA 的核心代码,每次一个TICK(换句话说就是新报价)来到后,系统会自动调用start()函数。deinit()函数是当 EA 关闭的时候调用的,这里放一些我们程序停止后需要“善后”的代码。start()函数是必须要有的,其它两个函数如果不需要可以不用写。 if(Bars<100) { Print("bars less than 100"); return(0); } 上面代码的意思是如果当前图表中的k 线少于100 根将会在日志信息里输出提示信息并且结束 start()函数的执行。return 的意思是返回,如果在程序中判断出有错误,下面的代码无法继续执行了,我们...